如何获得索引号。在bash中匹配正则表达式的数组元素?

时间:2014-04-09 06:11:52

标签: arrays regex bash

我有一个这样的文件:

c
a
b<
d
f

我需要获取索引号。在bash脚本中以<作为后缀的字母。我想到将文件读入数组然后将其与正则表达式.<$匹配。但是如何获得索引号。那个匹配这个正则表达式的元素?

我需要索引号。因为我想修改此文件以获取指向的字母,将<移动到下一行,如果它位于最后一行,则按顺序排列行并放置<在第一行之后。

3 个答案:

答案 0 :(得分:3)

您需要awk '/<$/ { print NR; }' <your-file>

答案 1 :(得分:1)

也可以使用Grep:

 grep  -n  \< infile

然后:

grep  -n  \< infile|cut -d : -f 1

答案 2 :(得分:0)

所以我构建了源文件,

$ cat file

c
a
b<
d
f<

在awk下面,它会将<移到下一行,但如果它是最后一行,<将移到第一行。

awk '{ if (/</) a[NR]
       sub(/</,"")
       b[NR]=$0 }
END{ for (i in a)
       { if (i==NR) { b[1]=b[1] "<" }
         else{ b[i+1]=b[i+1] "<"}
        }
     for (i=1;i<=NR;i++) print b[i]
    }' file

c<
a
b
d<
f