LINUX.ORG.RU

[bash скрипт] Разделить переменную по количеству символов.


0

3

Собственно сабж
есть переменная
GEO_BLOCK=«IN KR IL RO TH HK PL CN JP TW BR AR SA MY TR PK KZ EG VN ID MX PH DZ IR MA PE RS SG CL NG CO AR JO SN NP IN UG LA SA LY MG JM SD DO TO CR KW FJ SN NI HN EC PS CL ZA VN BO»

как разделить её по 15 стран на вывод?
желательно в цикле, ибо каждые 15 стран придется обрабатывать отдельно.

★★

Последнее исправление: kam (всего исправлений: 1)

$ echo "QWERTYYUIOPASDFGHJKLZXCVBNM" | sed 's/\(.\{,5\}\)/\1\n/g'
QWERT
YYUIO
PASDF
GHJKL
ZXCVB
NM
schizoid ★★★
()
$ x=(IN KR IL RO TH HK PL CN JP TW BR AR SA MY TR PK KZ EG VN ID MX PH DZ IR MA PE RS SG CL NG CO AR JO SN NP IN UG LA SA LY MG JM SD DO TO CR KW FJ SN NI HN EC PS CL ZA VN BO)
$ for ((i=0; i<${#x[@]}; i+=15)); do echo $i ${x[@]:i:15}; done
0 IN KR IL RO TH HK PL CN JP TW BR AR SA MY TR
15 PK KZ EG VN ID MX PH DZ IR MA PE RS SG CL NG
30 CO AR JO SN NP IN UG LA SA LY MG JM SD DO TO
45 CR KW FJ SN NI HN EC PS CL ZA VN BO

$ echo "IN KR IL RO TH HK PL CN JP TW BR AR SA MY TR PK KZ EG VN ID MX PH DZ IR MA PE RS SG CL NG CO AR JO SN NP IN UG LA SA LY MG JM SD DO TO CR KW FJ SN NI HN EC PS CL ZA VN BO" |awk '{for (i=15; i<NF; i+=15) $i=$i"\n"; print}'
IN KR IL RO TH HK PL CN JP TW BR AR SA MY TR
 PK KZ EG VN ID MX PH DZ IR MA PE RS SG CL NG
 CO AR JO SN NP IN UG LA SA LY MG JM SD DO TO
 CR KW FJ SN NI HN EC PS CL ZA VN BO
uzbl
()
$ echo "$GEO_BLOCK " | egrep -o '([A-Z][A-Z] ){1,15}'
IN KR IL RO TH HK PL CN JP TW BR AR SA MY TR 
PK KZ EG VN ID MX PH DZ IR MA PE RS SG CL NG 
CO AR JO SN NP IN UG LA SA LY MG JM SD DO TO 
CR KW FJ SN NI HN EC PS CL ZA VN BO
sdio ★★★★★
()
echo $GEO_BLOCK | tr " " "\n" | while read  a; do echo $a; done

И куча аналогичных вариантов.

Либо тупо башизм:

read -ra CTRY <<< "$GEO_BLOCK"
for i in "${CTRY[@]}"; do echo "$i"; done

baka-kun ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.