我正在努力使用 sed 来完成"testfile.txt",每次它遇到一行delete_me: abc
开始的行时,它就会:
- 保持线路
delete_me: abc
不变 - 但删除后面的所有行,直到到达文件中的下一个空白行。
例如。我想要这个输入:
delete_me: abc
sSAsaAaSA
AsaSAsaSAsa
asASAsS
^--- <blank line>
。仅更改为这一行:
delete_me: abc
我试过:
sed '/delete_me/ {n;d}' jil_testfile.txt
# deletes only the first line after 'delete_me'
sed '/delete_me/,/^$/d' jil_testfile.txt
# nearly works but deletes the 'delete_me' line too which I want to stay preserved.
有什么建议吗?
这可能对你有用(GNU sed(:
sed -n ':a;/delete_me/{p;:b;n;//ba;bb};p' file
照常打印行,直到第一次出现delete_me
。打印此行,除非该行包含delete_me
,否则不要再打印任何行。
由于自我编写第一个解决方案以来规范已更改,因此这是新的解决方案:
sed -n '/delete_me/{p;:a;n;/^$/b;ba};p' file