将字符串从 xargs 插入另一个字符串

wel*_*lly 4 unix awk sed

假设我有一些输出一堆字符串的命令。此命令的输出可能类似于:

...
foo
bar
blargh
...
Run Code Online (Sandbox Code Playgroud)

说我有一些固定的字符串

myString$Blah
Run Code Online (Sandbox Code Playgroud)

我想在命令的输出中插入 $ 所在的每个字符串,这样我最终会得到一个如下所示的文件:

...
myStringfooBlah
myStringbarBlah
myStringblarghBlah
...
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最简单方法是什么?(awk 和 sed 首选)

Dan*_* D. 11

你甚至不需要sedawk

xargs 可以这样做:与: -L1 -I '$' echo 'myString$Blah'

$ cat x.list
foo
bar
blargh
$ cat x.list | tr '\n' '\0' | xargs -0 -L1 -I '$' echo 'myString$Blah'
myStringfooBlah
myStringbarBlah
myStringblarghBlah
Run Code Online (Sandbox Code Playgroud)


jak*_*und 1

假设您可以使用格式字符串myString&Blah,并使用 & 符号而不是美元符号,将输出通过管道传输到此:

sed "s/.*/$format/"
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为&在替换字符串中用作“在此处插入匹配”运算符。正则表达式匹配整行,因此它将在&.

使用双引号来允许扩展格式字符串非常重要。

如果您确实需要使用&符号,请使用:

sed "s/.*/$(echo "$format" | tr '$' '&')/"
Run Code Online (Sandbox Code Playgroud)

如果字符串中有空格,$format 周围的引号很重要。