С однимвыражением 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)
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
.
Используйте 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