如何使用unix命令在文本文件中查找列号

时间:2014-05-10 07:31:14

标签: linux shell unix awk grep

假设我有一个包含6列的文本文件,如下所示

a|b|c|d|e|f

我知道文件中的字符' d'存在,但我想知道它的列号

我使用了以下命令

awk 's=index($0,"d"){print "position="s}' filename

但它也计算了我不想要的分隔符....我希望输出为4,以及#34; d"

2 个答案:

答案 0 :(得分:6)

使用awk你可以这样做:

awk -v val='d' -F '|' '{for (i=1; i<=NF; i++) if ($i==val) {print i} }' file
4

答案 1 :(得分:6)

定义&#34; |&#34;作为记录分隔符,并在awk中使用NR变量:

awk -v RS="|" '/^d$/{print NR;}' filename

^d$更改为您想要匹配的内容。