我有看起来像这样的表(制表符分隔):
Ron Rob rock bammy
m f m f
florida Atlanta florida texas
该表的顺序为5 * 512,基于第3行的数据,我想提取row1中的值。
例如:我想在2列n行的表格中列出所有居住在佛罗里达州和德克萨斯州的人的名字。
Florida Ron
Florida Rock
Texas BAmmy
等等。
有关bash或PERL衬里的任何建议...
先感谢您。
最佳答案
awk 'NR==1{for(i=1;i<=NF;i++)n[i]=$i}; NR==3{for(i=1;i<=NF;i++){if($i~/florida|texas/)print $i"\t"n[i];}}' yourFile
参见下面的测试:
kent$ echo "Ron Rob rock bammy
m f m f
florida Atlanta florida texas"|awk 'NR==1{for(i=1;i<=NF;i++)n[i]=$i}; NR==3{for(i=1;i<=NF;i++){if($i~/florida|texas/)print $i"\t"n[i];}}'
输出
florida Ron
florida rock
texas bammy
编辑
kent$ echo "Ron Rob rock bammy
m f m f
florida(8) Atlanta florida(8) texas(2;7)"|awk 'NR==1{for(i=1;i<=NF;i++)n[i]=$i}; NR==3{for(i=1;i<=NF;i++){if($i~/florida\(8\)|texas\(2;7\)/)print $i"\t"n[i];}}'
输出:
florida(8) Ron
florida(8) rock
texas(2;7) bammy