用linux自带的shell的三剑客进行文本过滤操作:
目的:从一个已经存在的文件中每次读取一个变量(一行),然后删除除了这个变量之外的所有变量(匹配,只要包含这个变量,就删除)。
首先是从文本读入的问题:
while read a
do
cmd
done < file
刚开始我是这个样子的:
while read a
do
sed -i "/$a/ d" file
done < file
后来发现不行,因为file已经作为文本流读入了,$a一定是file的所有内容,所以最后的结果一定是清空。
所以:
i=$(cat notprime | wc -l)
i=`expr $i `
while [ $i -gt 0 ]
do
a=`head -n 1 ./notprime `
echo $a >> new
sed -i "/$a/ d" notprime
i=$(cat notprime | wc -l)
i=`expr $i `
done
网友评论