在发布这个问题之前,我尝试了很多,但正则表达式超出了我的能力 我失败了几次,我找不到我需要用Google或Stack Overflow搜索的内容。
这是我的示例文件:
Host xmpp2
HostName 172.18.0.42
User root
Port 22
Host test
HostName 172.18.201.2
User root
Port 2223
IdentityFile /Users/arash/idkey.pem
Host afra
HostName 79.175.169.10
User root
Port 22
Host hv1
HostName 172.18.0.4
User root
Port 22
Host hv2
HostName 172.18.0.5
User root
Port 22
我想删除例如此块
Host test
HostName 172.18.201.2
User root
Port 2223
IdentityFile /Users/arash/idkey.pem
或任何其他块。如果这些文本块中的任何一个使用特定数量的行,则非常简单,但现在它可能是4行或5行或更多,所以我需要从主机删除到第一个空行,而不是特定数量的线。
答案 0 :(得分:2)
sed '/^Host test$/,/^$/d' file
输出:
Host xmpp2 HostName 172.18.0.42 User root Port 22 Host afra HostName 79.175.169.10 User root Port 22 Host hv1 HostName 172.18.0.4 User root Port 22 Host hv2 HostName 172.18.0.5 User root Port 22
如果你想编辑你的文件"就地"添加sed的选项-i
。