如何在while循环中使用sed删除匹配的行

时间:2016-03-16 14:16:00

标签: bash awk sed while-loop

以下是claim_note文件的内容

B|2050013344207770
B|2050013344157085

我的输入文件有值

B|2050013344207770|xxx|xxx 
B|2050013344157085|xxx|xxx
B|2050013344157999|xxx|xxx

我使用下面的代码删除输入文件中的匹配行,但我的代码只删除了第一个匹配的模式

cat claim_note | while read FILE
do
echo $FILE
sed -n "/$FILE/!p" Input > TempInput
mv TempInput Input
done

2 个答案:

答案 0 :(得分:1)

您可以使用awk

,而不是在每一行上循环和使用发送
awk -F'|' 'FNR==NR{a[$1,$2]; next} !(($1,$2) in a)' claim_note Input

B|2050013344157999|xxx|xxx

答案 1 :(得分:0)

您可以使用此grep

grep -vf claim.txt input.txt

输出:

B|2050013344157999|xxx|xxx