读书人

请问个shell语言的有关问题

发布时间: 2012-12-31 11:57:52 作者: rapoo

请教个shell语言的问题
我有两个文件,1.txt和2.txt。1.txt中每一行的某个域可能在2.txt中某一行出现,并独占2.txt的一行。我想在1.txt中查找所有该域在2.txt中出现的行,如果该域在2.txt中找到,则删除1.txt中的这一整行。
比如1.txt每一行用“,”来分割,其中第一个域在2.txt有对应,我的程序如下:
#!/bin/sh
INFILE=./1txt
OUTFILE=./out.1.txt
INFOFILE=./2.txt

cat $INFILE | while read line
do
#echo $line
pid=`echo $line | awk -F, '{print $1}'`
if [ "`grep $pid $INFOFILE`" == "" ];then
echo $line >> $OUTFILE
fi
done

这样做很慢,估计得好几小时才能完成,谁有有更快的方法吗?
[解决办法]

引用:
我查了下这个命令,似乎需要两个文件是有序的啊。

引用:

用命令 join 吧

呵呵,确实需要 key 列是排序的。
不如用 perl 写一个吧。

http://topic.csdn.net/u/20120620/20/517a50b9-9d3c-4388-b5d8-016c2169ed1a.html

读书人网 >perl python

热点推荐