[英]Awk delete line that contains data
我想刪除一行,如果它包含指定的值。
2 5 8
1 3 7
8 5 9
因此,如果我想刪除包含7作為第三個字段的行:
{
if($3 == 7){
####delete the line
}
}
應該說夠了
$ awk '$3 != 7'
請注意,這是一個數字比較,並將省略第三個字段所在的行,例如“0.7e1”,但它將適用於您提供的示例數據。
刪除包含7的行
awk '!/7/' yourFile
其他答案有效。 這就是原因
Awk的標准處理模型是讀取一行輸入,可選地匹配該行,如果匹配(可選)打印輸入。 其他解決方案使用否定匹配,因此除非進行匹配, 否則將打印行。
您的代碼示例不使用否定匹配:它表示“如果某些內容屬實,請執行此操作”。 因為您要刪除輸入,所以當您匹配該目標時,您可以跳過它。
{
if($3 == 7){
#skip printing this line
next
}
}
IHTH。
你可以這樣做:
awk '$3 /7/ {next} {print}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.