AWK print specific line based on search pattern AWK print specific line based on search pattern unix unix

AWK print specific line based on search pattern


with GNU sed & grep in 2 steps

sed '/>\w\+</!d;s/.*>\(\w\+\).*/\1/' data.xml>pattern.txtgrep -wf pattern.txt test.csv

..output:

222,yyy,servertorque,port190333,aaa,serverastrix,port8080422,yxy,servertorque,port290


One way with awk

awk -v FS="[><,]" 'NR==FNR{a[$3]++;next}$3 in a' data.xml test.csv

Test:

$ cat data.xml<group><hostname>servertorque</hostname><hostname>serverastrix</hostname></group>$ cat test.csv111,xxx,serversugar,port90222,yyy,servertorque,port190333,aaa,serverastrix,port8080422,yxy,servertorque,port290$ awk -v FS="[><,]" 'NR==FNR {a[$3]++;next} $3 in a' data.xml test.csv222,yyy,servertorque,port190333,aaa,serverastrix,port8080422,yxy,servertorque,port290


I assume you need:

awk -F',' '$3==<string_you_need> { print $0 }' test.csv