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