将字符串添加到每行前面的命令?

将字符串添加到每行前面的命令?

正在寻找类似的东西?有什么想法吗?

cmd | prepend "[ERRORS] "

[ERROR] line1 text
[ERROR] line2 text
[ERROR] line3 text
... etc

答案1

cmd | while read line; do echo "[ERROR] $line"; done

其优点是只使用 bash 内置命令,因此创建/销毁的进程更少,因此应该比 awk 或 sed 稍快一些。

@tzrik 指出它也可能是一个不错的 bash 函数。定义如下:

function prepend() { while read line; do echo "${1}${line}"; done; }

允许它像这样使用:

cmd | prepend "[ERROR] "

答案2

尝试这个:

cmd | awk '{print "[ERROR] " $0}'

干杯

答案3

我非常感谢@grawity,我将他的评论作为答案提交,因为在我看来这是最好的答案。

sed 's/^/[ERROR] /' cmd

答案4

cmd | sed 's/.*/[ERROR] &/'

相关内容