根据从文件中读取的列值删除行

时间:2013-09-10 09:26:56

标签: bash unix awk

我使用以下代码从input_file中提取第一列中具有特定值的行。行提取所依据的值在“one_column.txt”中:

while read file
do
awk -v col="$file" '$1==col {print $0}' input_file >> output_file
done < one_column.txt

我的问题是,如何提取第一列与one_column.txt中的任何值匹配的行?换句话说,如何从input_file中提取剩余的行,这些行不会在output_file中结束?

1 个答案:

答案 0 :(得分:1)

grep -vf可以成功:

 grep -vf output_file input_file

grep -f将一个文件与另一个文件进行比较。 grep -v匹配相反的情况。

测试

$ cat a
hello
good
bye
$ cat b
hello
good
bye
you
all
$ grep -f a b
hello
good
bye
$ grep -vf a b ## opposite
you
all