我有一个包含许多列的文件。让我们说“Employee_number”“Employee_name”“薪水”。我想通过全部或部分列名显示列中的所有条目。例如,如果我的输入“名称”我想要打印所有员工姓名。有没有可能用awk以简单的方式做到这一点? 感谢在awk中按名称搜索列
回答
给出一个脚本getcol.awk
如下:
BEGIN {
colname = ARGV[1]
ARGV[1] = ""
getline
for (i = 1; i <= NF; i++) {
if ($i ~ colname) {
break;
}
}
if (i > NF) exit
}
{print $i}
...并输入文件test.txt
:
apple banana candy deer elephant
A B C D E
A B C D E
A B C D E
A B C D E
A B C D E
A B C D E
A B C D E
...命令:
$ awk -f getcol.awk b <test.txt
。 ..给出以下输出:
B
B
B
B
B
B
B
请注意,输出文本不包含测试文件的第一行,该行被视为标题。
如果有多个匹配,那么是否应该打印多个列? – Scrutinizer 2013-04-09 17:16:57
@sudo_O:如果参数值和任何标题行之间没有匹配,则执行'if(i> NF)exit'行。它导致程序的主体不被执行。否则,程序将打印出与文件中的行(除标题外)一样多的空行。 – Simon 2013-04-09 18:52:12
@Scrutinizer:OP询问只打印与参数中的头部匹配的列。该程序打印其头部与参数相匹配但不是两个或更多的第一列。为多个匹配打印多列的修改很简单。 – Simon 2013-04-09 18:55:56
简单的一行就可以了:
$ 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
只是知道,如果你给employee
你会得到最后一列匹配employee
这是很容易但是改变了。
嗨@sudo_O,应该是'print $ n',不是? – Scrutinizer 2013-04-09 17:13:37
谢谢@Scrutinizer我应该使用一个更好的输入文件,所以这不会有思想倾向。 – 2013-04-09 17:17:45
- 1. SQL Server按名称搜索列
- 2. Solr搜索:按字母搜索名称
- 3. 在android中按照名称搜索firebase
- 4. 在Alfresco中按名称搜索文档
- 5. 按名称搜索类
- 6. 按分类名称搜索
- 7. 在oracle中搜索列名称
- 8. 多列名称搜索MySQL
- 9. 按名称和ID搜索在asp.net
- 10. 在ElasticSearch中搜索名称
- 11. 在导轨中按列名搜索
- 12. 按关键字搜索按类别搜索按名称搜索关键字
- 13. 在列表名称中搜索请求名称
- 14. 搜索名称
- 15. 名称为内搜索栏按钮
- 16. JQuery Dynatree - 按名称搜索节点
- 17. 按名称搜索非拉丁字符
- 18. Python:Facebook Graph API按名称搜索
- 19. Searchkick,按父母名称搜索
- 20. 按名称搜索XML元素值Perl
- 21. 按名称搜索地址链接 - Jsoup
- 22. FQL按名称搜索地点
- 23. 仅按名称搜索场地
- 24. 如何按名称搜索要点
- 25. Trip Advisor API按地点搜索名称
- 26. Google Places API - radarSearch按名称搜索
- 27. 按名称搜索项目,并显示
- 28. Facebook:按公司名称搜索人
- 29. Spring框架:按名称搜索属性
- 30. 如何按名称搜索结构?
如果有人说“列名匹配'员工'”,你想要一列还是两列输出? – 2013-04-09 19:22:05