linux - 匹配一个模式,插入模式,直到下一次匹配

标签 linux bash awk sed

我正在努力根据所需的输出格式化文件,使用 bash 工具。这是一个示例:

address="192.168.1.1"
portid="443"
portid="2000"
address="192.168.1.2"
portid="443"
portid="2000"

本质上,我想要实现的是搜索一个模式(在本例中为整个 IP 地址行),并将其添加到每个后续行,直到下一个匹配项(在下一个 IP 地址之前)。所需的输出是这样的:

address="192.168.1.1"portid="443"
address="192.168.1.1"portid="2000"
address="192.168.1.2"portid="443"
address="192.168.1.2"portid="2000"

如何使用 grepawksed 实现此目的?

最佳答案

考虑到您的实际文件与所示示例 Input_file 相同:

awk '/address/{val=$0;next} {print val $0}'  Input_file

关于linux - 匹配一个模式,插入模式,直到下一次匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45586461/

相关文章:

c - 努力通过信号在进程之间进行通信

c++ - 动态内存分配和内存块元数据

bash - 生成进程的 shell 脚本,在 SIGTERM 上终止子进程

regex - 根据不同的开始和结束分隔符将文件拆分为多个文件

linux x11 窗口管理器 - 阻止鼠标事件

ruby-on-rails - 打开一个新的终端选项卡并在里面运行命令,只有在打开选项卡之后

文件名中的 Bash 单引号和 ffmpeg 转义

bash - 如何删除没有具有不同扩展名的匹配文件的文件

regex - Bash - Sed/Awk 用新行替换字符串

javascript - 检查 CSV 文件内容并将其拆分为 2 个单独的文件