Как разделить и получить доступ к полям, разделенным двоеточием?

С однимвыражением sed:

sed -n 's/PRETTY_NAME="\(.*\)"/\1/p' /etc/*release

Выход:

Ubuntu 16.04.3 LTS

В вашем случае это будет выглядеть так:

SYS_VERSION=$(sed -n 's/PRETTY_NAME="\(.*\)"/\1/p' /etc/*release)
0
16.07.2019, 23:29
2 ответа
foreach line ("`cat /etc/group`")
    set fs = ($line:gas/:/ /)
    set f = ($fs)
    echo "$f[1]"
end

В tcshможно опустить промежуточную fsпеременную, а сразу set f = ($line:gas/:/ /).

Модификатор переменной :s/pat/rpl/заменит каждое вхождение patв переменной наrpl(pat— это простой текст, регулярные выражения не распознаются ). Флаг aговорит заменить все вхождения, а флаг g— сделать это во всех словах.

Если используется исходный файл csh, а файл /etc/groupсодержит метасимволы glob, вам придется заключить цикл в пару set noglob/ unset noglob.

0
28.01.2020, 02:39

Используйте awk с флагом -F. Вам придется использовать эхо и канал в awk вот так:

for line in `cat /etc/group`
do
   col1=$(echo $line | awk -F':' '{print $1}')
   col2=$(echo $line | awk -F':' '{print $2}')

   # Then you can use col1, col2, etc...

   echo "column 1 = $col1"
   echo "column 2 =  $col2"
done
0
28.01.2020, 02:39

Теги

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