2013-08-28 2 views
-1

awk에서 라이너가 하나 있습니다. 이 세 줄을 어떻게 스크립트로 해석 할 수 있습니까?Awk 스크립트에 하나의 라이너

awk -F":|," 'FNR==NR && /INFO - AId:/ {a[$6$8]=$0;next} END {for (i in a) print i "|" a[i]}' log >t1 
awk '/<?xml version/ {f=1} /<\/iSig>/ {f=0;print $0 "\n" } f' log >t2 
awk -F\| 'FNR==NR {a[$1]=$2;next} FNR==1 {RS="\n\n"} { for (i in a) {if ($0~i) {print a[i] $0 > i".log";close(i".log")}}}' t1 t2 

감사합니다. bash는 첫째

답변

0
$ cat > myscript.sh <<EOF 
#!/bin/sh 
awk -F":|," 'FNR==NR && /INFO - AId:/ {a[$6$8]=$0;next} END {for (i in a) print i "|" a[i]}' log > $1 
awk '/<?xml version/ {f=1} /<\/iSig>/ {f=0;print $0 "\n" } f' log >$2 
awk -F\| 'FNR==NR {a[$1]=$2;next} FNR==1 {RS="\n\n"} { for (i in a) {if ($0~i) {print a[i] $0 > i".log";close(i".log")}}}' $1 $2 
EOF 
$ chmod +x myscript.sh 
$ ./myscript.sh file1 file2 
0

이처럼 할 수있는 :

awk -F\| 'FNR==NR {a[$1]=$2;next} FNR==1 {RS="\n\n"} { for (i in a) {if ($0~i) {print a[i] $0 > i".log";close(i".log")}}}' <(awk -F":|," 'FNR==NR && /INFO - AId:/ {a[$6$8]=$0;next} END {for (i in a) print i "|" a[i]}' log) <(awk '/<?xml version/ {f=1} /<\/iSig>/ {f=0;print $0 "\n" } f' log) 
1

어떻게 스크립트로이 세 가지 라인을 알 수 있습니까?

학습하여 awk! 시작하기 가장 좋은 곳은 Effective Awk Programming입니다.

관련 문제