将制表符放在 AIX/ksh 上的每个输出行之前

Lan*_*nes 1 ksh sed aix

0:root@SERVER:/root # echo "something" | sed -e 's/^/\t/g'
tsomething
0:root@SERVER:/root # 
Run Code Online (Sandbox Code Playgroud)

AIX/ksh .. 为什么它不起作用?我只想在每一行之前放一个“标签”!

Chr*_*own 5

\t右侧的sed表达式不可移植。以下是一些可能的解决方案:

POSIX 外壳

请记住,由于许多 shell 在内部将其字符串存储为 cstring,如果输入包含空字符 ( \0),则可能会导致该行过早结束。

echo "something" | while IFS= read -r line; do printf '\t%s\n' "$line"; done
Run Code Online (Sandbox Code Playgroud)

awk

echo "something" | awk '{ print "\t" $0 }'
Run Code Online (Sandbox Code Playgroud)

珀尔

echo "something" | perl -pe 'print "\t"'
Run Code Online (Sandbox Code Playgroud)