我有一堆从TN3270屏幕生成的文本文件,每24行包含一个烦人的2行标题。每个标题的第一行包含“ X310A000”,但我想保留标题的第一次出现(不在第一行上)。
我可以删除所有标头
sed '/X310A000/{N;d}' $file
但是我尝试打印直到第一次出现的所有内容,然后然后删除其余标题的尝试不起作用:
sed '1,/X310A000/p;/X310A000/,$ /X310A000/{N;d}' $file
sed: -e expression #1, char 28: unknown command: `/'
我该怎么办?
答案 0 :(得分:2)
如果您想给awk
一个机会,那就容易多了:
awk 'index($0, "X310A000") { if (p) {getline; next} else p=1 } 1' file
该命令在第一次遇到模式时将标志p
切换为1
。设置标志后,它将跳过带有模式的行以及输出的下一行。
答案 1 :(得分:1)
为第二个范围添加其他花括号:
sed '1,/X310A000/p;/X310A000/,${/X310A000/{N;d}}' $file