我正在寻找一种方法来使用 UNIX 中的管道分隔文件对每一行执行以下操作,但不确定从哪里开始:
任何指针将不胜感激。
这就是全部sed
工作,您不需要额外的工具:
假设你要添加foo
的含线的末端f
,并bar
在没有行结束f
,但有b
sed '/f/{
s/$/foo/
b
}
/b/s/$/bar/'
Run Code Online (Sandbox Code Playgroud)
您可以使用 来“寻址”行/pattern/
,因此仅当它们包含模式时才会执行以下命令。因此,在示例中,只有包含f
触发器的行才会执行s
替换和b
(将{}
命令分组,因此仅当地址匹配时才应用里面的所有内容。b
分支到脚本末尾以避免为 a 附加另一个字符串匹配b
.
没有分支的不同方法:
sed '/f/s/$/foo/;s/^[^f]*b[^f]*$/&bar/'
Run Code Online (Sandbox Code Playgroud)
作为练习,您可以通过一些sed
知识自己解决这个问题,man sed
必要时使用。