比较2个文件并在匹配模式后执行命令

时间:2018-02-14 09:05:38

标签: bash awk sed

我有2个文件,比如test和test1,其中包含以下值。

试验:

apple;orange;mkdir /etc/test;cd /etc/test;touch 123;mkdir 1234
banana;orange;cd /etc/test;touch abc;mkdir abcd
grape;lemon;cd /etc/test;touch abcd;mkdir abcde

TEST1:

apple;orange;

如何比较test1和test并执行与值匹配的其余命令?

在这种情况下,它应该运行mkdir /etc/test;cd /etc/test;touch 123;mkdir 1234

1 个答案:

答案 0 :(得分:1)

如果您的实际Input_file与显示的示例相同,那么awk之后可能会对您有所帮助。此外,由于我没有权限在/etc中创建目录,因此无法使用给定的样本对其进行测试。

awk 'FNR==NR{sub(/\;$/,"");a[$0];next} (($1,$2) in a){$1=$2="";system($0)}' SUBSEP=";" test1  FS=";" test

OR(不含SUBSEP):

awk 'FNR==NR{sub(/\;$/,"");a[$0];next} (($1";"$2) in a){$1=$2="";system($0)}' test1  FS=";" test