Согласно предложенным комментариям, следует использовать массив:
#!/bin/bash
AR1_p=(22 23 24 25)
for i in {1..4}
do
echo "${AR1_p[$i-1]}"
done
попробуй
awk -F_ '{ print "Country: " $(NF-1) }' infile
Вместо этого вы можете попробовать sed
.
sed -r 's/[^_]*_([^_]*)_.*/Country: \1/' infile
[^_]*_
соответствует всем, пока не появится первый _
. ([^_]*)_
соответствует всему после совпадения выше до следующего _
и .*
соответствует всему после этого, но сохраняет только часть (...)
как захваченную группу. \1
— обратная -ссылка на захваченную группу ([^_]*)
. Использование sed
вместо:
$ sed -E 's/^This is (an? )?/Country: /; s/\<_//; s/_\>//' file
Country: PLUTO
Country: PINEAPPLE
Country: ORANGE
Country: RICE
Это относится к трем заменам:
This is
, за которым может следовать либо a
, либо an
на Country:
. _
в начале слова. _
в конце слова. Последние две замены позволяют использовать данные в форме
This is a _big_blue_ball_
, который будет преобразован в
Country: big_blue_ball
, а не
Country: big blue ball
Альтернатива awk
, которая просто игнорирует первую часть каждой строки и обрезает первый и последний символы последнего пробела -поля с разделителями:
awk '{ printf("Country: %s\n", substr($NF, 2, length($NF)-2)) }'
Выполнено с помощью Python
#!/usr/bin/python
import re
l=[]
k=open('file.txt','r')
for i in k:
l.append(i)
m=re.compile(r'_.*')
for h in l:
out=re.search(m,h)
print "Country:",out.group().split('_')[-2]
выход
Country: PLUTO
Country: PINEAPPLE
Country: ORANGE
Country: RICE