gpt4 book ai didi

Bash sed 在找到的字符串之前和之后删除

转载 作者:行者123 更新时间:2023-11-29 09:15:03 24 4
gpt4 key购买 nike

我目前有以下代码:

sed -i "/# 我的评论文本/,+2d"/etc/crontab

这会删除此行“# My Comment Text”之后的 2 行,但我还希望它删除此找到的字符串上方的 1 行。我如何在我的 1 liner sed 命令中解决这个问题?

最佳答案

这里有 2 个 sed 命令可以解决这个问题。如果你的输入文件看起来像

1
2
3
4 # My Comment Text
5
6
7
8

我们要删除第 3、4、5、6 行。

$ sed '/# My Comment Text/ {h;N;N;g}' file  | tac | sed '/# My Comment Text/,+1d' | tac
1
2
7
8

第一个sed命令删除匹配行之后的2行,不删除匹配行。
然后我们反转文件,删除匹配的行和后面的行(也就是普通文件中的前一行。
重新反转输入,我们就完成了。

关于Bash sed 在找到的字符串之前和之后删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49222156/

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