[英]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.