0
我想求人关于下列问题不正确的响应:awk脚本中, “if” 语句
我有两个文件,文件1:
1 apples
2 bananas
3 orange
4 prunes
和文件2:
1 oranges
2 apples
3 nuts
我需要从file2中提取所有与file1不匹配的行(即“3个坚果”)。我写了一个脚本awk
:
#!/bin/awk -f
BEGIN {
while (getline <hdr>0) {
a[i++]=$2;
}
close (hdr);
}
{ for (i in a) {
if (a[i]!=$2) {
print a[i];
}
}
}
我的命令行:
awk -v hdr=file2 -f script_name file1
但是,我得到的结果是文件2个几倍的只是内容。 问题可能是什么?
对于文件中的每一行,你都打印出与它不一样的所有'a [i]'。 – Barmar
您需要浏览所有* a中的条目。如果它们中没有一个匹配,则打印'a [i]'。一个简单的方法是将'a'设为一个关联数组,其中'$ 2'是索引。然后你可以写'if(!($ a in a))' – Barmar
在第二个文件中,'1 oranges'与第一个文件中的'3 orange'不匹配,除非你做了一些花哨的语言分析,显示。 (另外,复数和单数都回到前面:'1橙色','3橙子':) :) _) –