gpt4 book ai didi

unix - 删除文本行 block

转载 作者:行者123 更新时间:2023-12-04 04:32:15 25 4
gpt4 key购买 nike

场景:

#Start1
text
text
text
#Start2
text
#Start3
text
text

如上所示,块并不确定其包含的行数。问题是如何使用 unix命令删除块之一说 #Start2 .

我试过了
less <file_name> | sed '/Start2/.+1d' | less

是的,如果我能确定有多少行拖尾 #Start2,它可能适用于这种情况。

但是如果每次拖尾的行数不是恒定的怎么办 #Start2发生?我可能无法删除所有内容或不小心删除了其他块的某些内容。

我需要一种更复杂的方式来知道它到达了块的末尾。有吗?

谢谢

最佳答案

使用 awk你可以这样做:

awk '/^#/ {f=0} /^#Start2/ {f=1} !f;' file
#Start1
text
text
text
#Start3
text
text

awk只要 f=0 就打印所有行或不正确。 f以默认值开头 empty0如果行以 # 开头套装 f0 ,所以打印线。
如果行以 #Start2 开头套装 f1 ,不打印。
这将使 awk如果找到 #Start2,则打印所有行并停止,如果找到 # 则再次继续

另一种方法:
awk '!/Start2/' RS=# ORS=# file
#Start1
text
text
text
#Start3
text
text

这表明一条记录以 # 开头
如果记录包含 Start2 ,然后不要打印它。所有其他将被打印。

关于unix - 删除文本行 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20394986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com