簡體   English   中英

如何獲取索引號 與bash中的正則表達式匹配的數組元素的元素?

[英]How to get index no. of the element of an array which matches regex in bash?

我有一個像這樣的文件:

c
a
b<
d
f

我需要獲取索引號。 bash腳本中后綴<的字母的形式。 我想到將文件讀入數組,然后將其與正則表達式.<$匹配。 但是我如何獲得索引號。 匹配此正則表達式的元素?

我需要索引號。 因為我要修改此文件以獲取所指向的字母,所以將<移至下一行,如果在最后一行,則將各行的順序打亂,並在第一行之后放置<

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

Grep也可以使用:

 grep  -n  \< infile

然后:

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

所以我建立了源文件

$ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM