假设您在文本文件中有记录,如下所示:
header data1 data2 data3
如果data1是给定的字符串,我想删除整个记录。我认为这需要awk,我不知道。
答案 0 :(得分:6)
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 }
答案 1 :(得分:0)
不知道您想要的输出和样本输入不足。
awk 'BEGIN{RS=""}!/data1/' file