我有一個包含許多列的文件。讓我們說「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. 按分類名稱搜索
- 5. 多列名稱搜索MySQL
- 6. 按名稱和ID搜索在asp.net
- 7. 在ElasticSearch中搜索名稱
- 8. 在列表名稱中搜索請求名稱
- 9. Google Places API - radarSearch按名稱搜索
- 10. Searchkick,按父母名稱搜索
- 11. Trip Advisor API按地點搜索名稱
- 12. Spring框架:按名稱搜索屬性
- 13. Bonjour:按名稱搜索服務
- 14. 按名稱搜索項目,並顯示
- 15. 僅按名稱搜索場地
- 16. 按名稱搜索XML元素值Perl
- 17. FQL按名稱搜索地點
- 18. Python:Facebook Graph API按名稱搜索
- 19. 小冊子搜索地址按名稱
- 20. 如何按名稱搜索結構?
- 21. 搜索名稱cx_Oracle
- 22. Postgres名稱搜索
- 23. 使用awk在列內搜索
- 24. 在SQL Server中使用XML列搜索特定的列名稱
- 25. IOS:在tableview中搜索名稱
- 26. 在BASH中搜索近似名稱
- 27. 在ios中搜索城市名稱
- 28. 如何在Perl6中按名稱搜索Unicode碼點?
- 29. 如何顯示在數據庫中按名稱搜索成員
- 30. 在rdf/n3文件中按名稱搜索
如果有人說「列名匹配'員工'」,你想要一列還是兩列輸出? – 2013-04-09 19:22:05