寻找这样的东西?有任何想法吗?
cmd | prepend "[ERRORS] "
[ERROR] line1 text
[ERROR] line2 text
[ERROR] line3 text
... etc
Run Code Online (Sandbox Code Playgroud)
小智 63
尝试这个:
cmd | awk '{print "[ERROR] " $0}'
Run Code Online (Sandbox Code Playgroud)
干杯
pjz*_*pjz 56
cmd | while read line; do echo "[ERROR] $line"; done
Run Code Online (Sandbox Code Playgroud)
具有仅使用 bash 内置函数的优点,因此将创建/销毁更少的进程,因此它应该比 awk 或 sed 快一点。
@tzrik 指出它也可能是一个不错的 bash 函数。像这样定义:
function prepend() { while read line; do echo "${1}${line}"; done; }
Run Code Online (Sandbox Code Playgroud)
将允许它像这样使用:
cmd | prepend "[ERROR] "
Run Code Online (Sandbox Code Playgroud)
Eri*_*son 19
With all due credit to @grawity, I'm submitting his comment as an answer, as it seems the best answer here to me.
sed 's/^/[ERROR] /' cmd
Run Code Online (Sandbox Code Playgroud)
Tin*_*ino 12
我创建了一个GitHub 存储库来进行一些速度测试。
结果是:
awk
是最快的。 sed
有点慢,但perl
并不比 慢多少sed
。显然,所有这些都是高度优化的文本处理语言。ksh
脚本 ( shcomp
) 运行可以节省更多的处理时间。相比之下,bash
与编译ksh
脚本相比,速度非常慢。awk
似乎不值得付出努力。相比之下python
,速度很慢,但我还没有测试过编译案例,因为在这样的脚本案例中,这通常不是你会做的。
测试了以下变体:
while read line; do echo "[TEST] $line"; done
while read -r line; do echo "[TEST] $line"; done
while read -r line; do echo "[TEST]" $line; done
while read -r line; do echo "[TEST]" "$line"; done
sed 's/^/[TEST] /'
awk '{ print "[TEST] " $0 }'
awk -vT="[TEST] " '{ print T $0 }'
awk -vT="[TEST]" '{ print T " " $0 }'
awk -vT="[TEST]" 'BEGIN { T=T " "; } { print T $0 }'
T="[TEST] " awk '{ print ENVIRON["T"] $0 }'
T="[TEST]" awk '{ print ENVIRON["T"] " " $0 }'
T="[TEST]" awk 'BEGIN { T=ENVIRON["T"] " " } { print T $0 }'
perl -ne 'print "[TEST] $_"'
Run Code Online (Sandbox Code Playgroud)
我的一个工具的两个二进制变体(虽然它没有针对速度进行优化):
./unbuffered.dynamic -cp'[TEST] ' -q ''
./unbuffered.static -cp'[TEST] ' -q ''
Run Code Online (Sandbox Code Playgroud)
Python缓冲:
python -uSc 'import sys
for line in sys.stdin: print "[TEST]",line,'
Run Code Online (Sandbox Code Playgroud)
和 Python 无缓冲:
python -uSc 'import sys
while 1:
line = sys.stdin.readline()
if not line: break
print "[TEST]",line,'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67052 次 |
最近记录: |