4

多くの列を持つファイルがあります。「Employee_number」「Employee_name」「Salary」としましょう。列名の全部または一部を指定して、列内のすべてのエントリを表示したいと考えています。たとえば、入力「名前」の場合、すべての従業員の名前を印刷したいとします。awkを使用して簡単にこれを行うことは可能ですか? ありがとう

4

2 に答える 2

3

シンプルなワンライナーでうまくいきます:

$ cat file
a b c 
1 2 3
1 2 3
1 2 3

$ awk -v c="a" 'NR==1{for(i=1;i<=NF;i++)n=$i~c?i:n;next}n{print $n}' file
1
1
1

$ awk -v c="b" 'NR==1{for(i=1;i<=NF;i++)n=$i~c?i:n;next}n{print $n}' file
2
2
2

$ awk -v c="c" 'NR==1{for(i=1;i<=NF;i++)n=$i~c?i:n;next}n{print $n}' file
3
3
3  

# no column d so no output
$ awk -v c="d" 'NR==1{for(i=1;i<=NF;i++)n=$i~c?i:n;next}n{print $n}' file

name注:要件のように、一致させたい場合は、一致する最後の列を取得することemployee_nameに注意してください。ただし、これは簡単に変更できます。employeeemployee

于 2013-04-09T07:53:30.353 に答える