나는 표준 출력을 가지고 있습니다 :
jh888636 4533 cklsls 55885
sp838922 7373 ksshhs 77321
dp828273 8722 kiwjkk 72661
찾을 정적 파일은 다음과 같습니다.
"ah768889"|"Aron Hease"|"Louis Jid"|"99949"
"jh888636"|"John Holmes"|"Peter King"|"60036"
"sp838922"|"Steven Parn"|"Jay Walker"|"60004"
"dp828273"|"David Pim"|"Kate Jast"|"89488"
이제 내 목표는 stdout의 열 1을 정적 파일의 열 1과 일치시키고 열 2/4 등을 추출/인쇄하는 것입니다.
원하는 출력의 예:
John Holmes (60036) 4533 cklsls 55885
Steven Parn (60004) 7373 ksshhs 77321
David Pim (89488) 8722 kiwjkk 72661
답변1
또 다른 awk
방법:
... |awk 'NR==FNR{one=$1;$1="";seen[one]=$0; next}
{FS="[|\"]"} seen[$2]{printf ("%s (%s) %s\n", $5, $(NF-1), seen[$2])}' - static
출력은 다음과 같습니다.
John Holmes (60036) 4533 cklsls 55885
Steven Parn (60004) 7373 ksshhs 77321
David Pim (89488) 8722 kiwjkk 72661
위의 - static
대시는 다음을 -
의미합니다.앗표준 입력에서 읽는 것은 다음과 같습니다 static
.정적 파일.
답변2
저는 4단계로 했어요
sed "s/|/ /g" staticfile_lookup | sed 's/"//g' >> static_file_lookup_final.txt
awk 'NR==FNR{a[$1];next}($1 in a){print $2,$3,$NF}' stdout static_file_lookup_final.txt >>static_file_lookup_fina1_1.txt
awk '{$1="";print $0}' stdout >>stdout_final.txt
=========
cat static_file_lookup_fina1_1.txt
John Holmes 60036
Steven Parn 60004
David Pim 89488
===========
cat stdout_final.txt
4533 cklsls 55885
7373 ksshhs 77321
8722 kiwjkk 72661
=================
paste static_file_lookup_fina1_1.txt stdout_final.txt
산출
John Holmes 60036 4533 cklsls 55885
Steven Parn 60004 7373 ksshhs 77321
David Pim 89488 8722 kiwjkk 72661