2015-03-02 58 views
-1

我看了很多這個答案的地方,但找不到它。在這裏仍然學習AWK,並且只是想知道如何打印找到匹配的列號。AWK列出找到匹配的列號

我想劇本給我,其中的正則表達式匹配 「/ 1」 發現

INPUT

name1 0/0 0/0 0/1 0/0 
name2 0/1 0/0 0/0 0/0 
name3 1/1 0/0 0/0 0/0 
name4 0/0 0/0 0/0 1/1 

所需的輸出

4 
2 
2 
5 
+1

使用領域/列號'for'循環遍歷列,然後打印變量的值。 – Barmar 2015-03-02 23:03:56

+1

我們不是在這裏爲你寫代碼。請進行嘗試,併發布您嘗試的內容,以便我們幫助您解決問題。 – Barmar 2015-03-02 23:04:41

回答

5
$ cat adr.txt 
name1 0/0 0/0 0/1 0/0 
name2 0/1 0/0 0/0 0/0 
name3 1/1 0/0 0/0 0/0 
name4 0/0 0/0 0/0 1/1 

$ awk '{ for (i=1; i<=NF; ++i) { if ($i ~ "/1$") print i } }' adr.txt 
4 
2 
2 
5 
+0

你應該把'「/ 1」'改成'「/ 1 $」',否則它也會匹配'0/12' – Jotne 2015-03-03 07:42:56

+0

謝謝,@jotne,相當真實。答案已更新。 – jas 2015-03-03 08:50:01