2015-03-02 60 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