Ran*_*Dom 8 shell stdout mailman
假设我运行命令:
sudo ./list_members Physicians
Run Code Online (Sandbox Code Playgroud)
我想像这样为输出添加前缀:
Physicians user@domain.com
Physicians user2@domain.com
Physicians user3@domain.com
Physicians user4@domain.com
Run Code Online (Sandbox Code Playgroud)
我可以像这样为 StdOutput 添加前缀吗?
Tag*_*int 10
我建议您使用ts
moreutils 包中的实用程序。虽然它的主要目的是在输出行前面加上时间戳,但它可以使用任意字符串或代替时间戳
for line in {01..05}; do echo $line; done | ts "A string in front "
A string in front 01
A string in front 02
A string in front 03
A string in front 04
A string in front 05
Run Code Online (Sandbox Code Playgroud)
使用小号tream ED itor:
sudo ./list_members Physicians | sed 's/^/Physicians /'
Run Code Online (Sandbox Code Playgroud)
为了使它成为辅助函数,您可能更喜欢awk
:
prefix() { P="$*" awk '{print ENVIRON["P"] $0}'; }
sudo ./list_members Physicians | prefix 'Physicians '
Run Code Online (Sandbox Code Playgroud)
如果您想同时为 stdout 和 stderr 加上前缀,可以通过以下方式完成:
{
sudo ./list_members Physicians 2>&1 >&3 3>&- |
prefix 'Physicians ' >&2 3>&-
} 3>&1 | prefix 'Physicians '
Run Code Online (Sandbox Code Playgroud)