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橙子':) :) _) –