【问题标题】:AWK print the column number where a match is found [closed]AWK打印找到匹配项的列号[关闭]
【发布时间】:2015-05-03 11:15:22
【问题描述】:

我在很多地方寻找这个答案,但找不到。还在学习 AWK,只是想知道如何打印找到匹配项的列号。

我希望脚本给我找到正则表达式匹配“/1”的字段/列号

输入

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

【问题讨论】:

  • 使用for 循环遍历列,然后打印变量的值。
  • 我们不是来为您编写代码的。请尝试一下,并发布您尝试过的内容,以便我们帮助您解决问题。

标签: regex bash shell awk scripting


【解决方案1】:
$ 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

【讨论】:

  • 你应该把"/1"改成"/1$",否则它也会匹配0/12
  • 谢谢,@jotne,非常正确。答案已更新。
  • 删除模式中的引号后为我工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 2011-06-20
  • 2021-11-26
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
相关资源
最近更新 更多