2012-09-25 60 views

回答

2

下面是一個簡單的一行是應該做的技巧:

sed "$(awk '/no/{print NR"d"}' fileB)" fileA 

你在哪裏把你的正則表達式匹配在你看到上面的單詞「否」的地方。

它的工作原理是用awk掃描第一行,然後打印行號,後面跟着匹配符所在的字母「d」。這種nd的模式是一個sed命令,用於刪除輸入流的第n行。

該版本不會修改fileA的內容,但會打印將行刪除到stdout的結果。使用sed的-i標誌修改文件:

sed -i "$(awk '/no/{print NR"d"}' fileB)" fileA 
2

你可以用糨糊把線路和while循環遍歷它們:

while read -r a_input b_input; do 
    [[ $b_input == "ok" ]] && echo "$a_input" 
done < <(paste -d' ' fileA fileB) 

用awk的完整性:

awk '$2 == "ok" { print $1 }' < <(paste -d' ' fileA fileB) 
+0

我證實了你的答案也有效,但你能解釋它嗎? – shilk

相關問題