在 Bash 脚本中的文件的特定行之后添加文本

在 Bash 脚本中的文件的特定行之后添加文本

ip.txt我有一个包含 IP 地址的txt ( ) 文件。我将它们分组在 TCP 和 UDP 下。文件摘录如下:

#TCP
162.298.38.930
162.298.38.931
162.298.38.932
#UDP
162.298.38.930
162.298.38.931
162.298.38.932

我有一个特定的 IP ( 162.298.38.929),可以通过 bash 脚本将两者添加到 TCP 和 UDP 行下的 ip.txt 中,所以它应该像这样。

#TCP
162.298.38.929
162.298.38.930
162.298.38.931
162.298.38.932
#UDP
162.298.38.929
162.298.38.930
162.298.38.931
162.298.38.932

我怎样才能在 bash 脚本中实现这一点?行号不适用于我的情况,因为 #TCP 和 #UDP 行号可能会更改,因为我在文件中添加了很多注释。 Bash 脚本应该在 TCP 和 UDP 下搜索并添加 IP。

答案1

使用 GNU Sed 的追加操作

假设两个部分都有162.298.38.932, 并且您想要在两个条目的正下方附加另一个 IP 地址,则以下 sed 脚本可以完成这项工作。

sed '/162\.298\.38\.932/a\162.298.38.929' ip.txt

相关内容