假设您在文本文件中有记录,如下所示:
header data1 data2 data3
如果data1是给定的字符串,我想删除整个记录.我认为这需要awk,我不知道.
通过将记录分隔符设置为空字符串,awk可以处理这些多行记录:
BEGIN { RS = ""; ORS = "\n\n" }
$2 == "some string" { next } # skip this record
{ print } # print (non-skipped) record
Run Code Online (Sandbox Code Playgroud)
您可以将其保存在文件中(例如remove.awk)并执行它awk -f remove.awk data.txt > newdata.txt
这假设您的数据格式为:
header
data
....
header
data
...
Run Code Online (Sandbox Code Playgroud)
如果记录之间没有空行,则需要手动拆分记录(每条记录有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 }
Run Code Online (Sandbox Code Playgroud)