ksh shell脚本根据字符串打印和删除匹配的行

时间:2016-12-06 13:21:39

标签: shell ksh

我有2个文件,如下所示。我需要一个脚本来从file1中的file2中查找字符串,并删除包含file1中字符串的行并将其放在另一个文件中(output1.txt)。如果字符串不存在于File1(Ouput2.txt)中,它还会删除已删除的行和字符串。

File1中:

nm

文件2:

Apple
Boy: Goes to school
Cat

我需要输出如下。

Output1.txt:

Boy
Dog

Output2.txt:

Apple
Cat

任何人都可以帮忙吗

1 个答案:

答案 0 :(得分:1)

如果您的系统上有awk

awk -v FS='[ :]' 'NR==FNR{a[$1]}NR>FNR&&!($1 in a){print $1}' File2 File1 > Output1.txt
awk -v FS='[ :]' 'NR==FNR{a[$1]}NR>FNR&&!($1 in a){print $1}' File1 File2 > Output2.txt

脚本在数组a中存储参数中给出的第一个文件的第一个元素$1

如果第二个文件的第一个参数不是数组的一部分,请将其打印出来。

请注意,分隔符是空格或: