다음 명령을 실행한다고 가정해 보겠습니다.
sudo ./list_members Physicians
다음과 같이 출력에 접두사를 추가하고 싶습니다.
Physicians [email protected]
Physicians [email protected]
Physicians [email protected]
Physicians [email protected]
StdOutput 앞에 이런 접두어를 붙일 수 있나요?
답변1
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
답변2
사용에스트레메편집하다이토:
sudo ./list_members Physicians | sed 's/^/Physicians /'
도우미 기능으로 만들려면 다음을 awk
선호할 수 있습니다.
prefix() { P="$*" awk '{print ENVIRON["P"] $0}'; }
sudo ./list_members Physicians | prefix 'Physicians '
stdout 및 stderr에 접두사를 추가하려면 다음 방법으로 수행할 수 있습니다.
{
sudo ./list_members Physicians 2>&1 >&3 3>&- |
prefix 'Physicians ' >&2 3>&-
} 3>&1 | prefix 'Physicians '
답변3
다음을 사용하여 이 작업을 수행할 수도 있습니다 awk
.
$ sudo ./list_members | awk '{print "Physicians "$0}'
Physicians [email protected]
Physicians [email protected]
Physicians [email protected]
Physicians [email protected]
또는 다음을 사용하여 xargs
:
$ sudo ./list_members | xargs -n1 echo 'Physician'
./list_members
2개 이상의 매개변수를 포함할 예정 이라면 이를 사용하여 xargs
입력을 분할 할 수 있습니다 \n
.
$ sudo ./list_members | xargs -n1 -d $'\n' echo 'Physician'
Physician [email protected] xxx
Physician [email protected] yyy
Physician [email protected] zzz
Physician [email protected] aaa
답변4
Bourne 쉘(또는 상위 세트인 BASH)을 사용하면 솔루션이 100% POSIX로 유지됩니다.
sudo ./list_members | while read LINE; do echo "Prefix ${LINE}"; done