假設你有一個文本文件中的記錄看起來像這樣:如何刪除一行之前和兩個字符串之後?
header data1 data2 data3
我想刪除整個記錄,如果數據1是一個給定的字符串。我認爲這需要awk,我不知道。
假設你有一個文本文件中的記錄看起來像這樣:如何刪除一行之前和兩個字符串之後?
header data1 data2 data3
我想刪除整個記錄,如果數據1是一個給定的字符串。我認爲這需要awk,我不知道。
awk中可以通過記錄分隔設置爲空字符串處理這些多記錄:
BEGIN { RS = ""; ORS = "\n\n" }
$2 == "some string" { next } # skip this record
{ print } # print (non-skipped) record
您可以保存在文件中這個(如remove.awk
),並與awk -f remove.awk data.txt > newdata.txt
執行它這是假設你的數據的格式如下:
header
data
....
header
data
...
如果記錄之間沒有空行,則需要手動拆分記錄(第是每條記錄有4行):
{ a[++i] = $0 }
i == 2 && a[i] == "some string" { skip = 1 }
i == 4 && ! skip { for (i = 1; i <= 4; i++) print a[i] }
i == 4 { skip = 0; i = 0 }
不知道你想要的輸出和樣本輸入不足。
awk 'BEGIN{RS=""}!/data1/' file