@uranus71
IT как хобби

В linux есть файл locale.gen. и строки типа en_US.UTF-8 UTF-8. Каким образом я могу разделить строку на 2 переменные до пробела и после?

В дистрибутиве arch linux есть файл locale.gen. В нем строки вида
ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8
zh_SG GB2312
Вопрос в том что бы строку такого вида разделить на 2 переменные например zh_SG в одной и GB2312 в другой.
Спасибо за помощь
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
Вариант 1
читаем файл построчно в цикле(while) ридом(read), а уже в цикле каждую строку преобразуем в переменные примерно так:
$ LINE="zh_SG GB2312"
$ eval $(echo "$LINE" | awk '{print "var1="$1";var2="$2}')
получим:
$ echo "$var1 $var2"
zh_SG GB2312

Вариант 2
Другой вариант это просто загнать в массив.
например есть файл lines.txt содержащий:
ru_RU.UTF-8 UTF-8
en_US.UTF-8 UTF-8
zh_SG GB2312

преобразовываем в массив:
$ lines=(`cat lines.txt`)
в итоге получим что в парных элементах массива будет находиться значения из первого столбца, а в непарных из второго, например для первой строки это:
$ echo ${lines[0]}
ru_RU.UTF-8
$ echo ${lines[1]}
UTF-8
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
через read
$ LINE="zh_SG GB2312"
$ IFS=' '; read var1 var2<<<$LINE
$ echo $var1
zh_SG
$ echo $var2
GB2312


через variable expansion
$ LINE="zh_SG GB2312"
$ echo ${LINE% *}
zh_SG
$ echo ${LINE#* }
GB2312
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы