我有看起来像这样的表(制表符分隔):

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

10-04 14:16