Вот как я бы это сделал.
Сначала я установил переменную среды IFS, чтобы сообщить read
, что "," - это разделитель полей.
export IFS=","
Учитывая файл "вход ", содержащий данные, которые вы предоставили, я могу использовать следующий код:
cat test | while read a b c d; do echo "$a:$b:$c:$d"; done
Чтобы быстро повторить то, что происходит выше.cat test |
читает файл и передает его на while
.while
выполняет код между do
и done
, а read
возвращает значение true.read
читает строку из стандартного ввода и разделяет ее на переменные («a», «b», «c» и «d») в соответствии со значением $ IFS.Наконец, echo
просто отображает переменные, которые мы читаем.
Что дает мне следующий вывод
X1:X2:X3:X4
Y1:Y2:Y3:Y4
Кстати, руководство BASH всегда хорошо читается.Вы узнаете что-то новое каждый раз, когда читаете это.