$cat data
123
ABC
DEF
GHI
ABC
EFG
输出应为
DEF
GHI
ABC
EFG
匹配单词将为“ABC”。因此,它将检测第一次出现的单词“ABC”,并将在匹配行
后的下一行中打印答案 0 :(得分:1)
短 awk 解决方案:
awk '/ABC/ && !f{ f=1;next }f' file
/ABC/ && !f
- 遇到ABC
行并使用未设置标记/标记!f
时 - 将标记f=1
设置为第一次出现{{1}的指示符1}}行; ABC
- 跳过当前的模式行
next
- 设置标记/标记时打印行
输出:
f
答案 1 :(得分:0)
$ sed '1,/ABC/d' data
DEF
GHI
ABC
EFG
这会将sed
(d
)的删除功能应用于1到/ABC/
范围内的所有行(与模式ABC
匹配的第一行)。这会删除前几行,包括包含ABC
的行。
打印所有行的默认操作将应用于其余行。
使用awk
:
$ awk '/ABC/ && !f && f = 1 { next } f' data
DEF
GHI
ABC
EFG
如果在一行中找到ABC
并且未设置f
,请将f
设置为1并跳至下一行。如果设置了f
,则打印该行,否则丢弃输入。