我有一個包含許多列的文件。讓我們說「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