В awk есть функция plit. В неё задаёш строку, разделатель и массив. если написать в неё split(str,arr,'.') и передать str='192.168.2.67' то значением arr будет массив длинной 4 и 1 элемент 192 второй 168 и т.д. Как тоже самое сделать только в shell?
Или просто как нибудь вырезать цифры до точки.
>В awk есть функция plit. В неё задаёш строку, разделатель и массив.
>если написать в неё split(str,arr,'.') и передать str='192.168.2.67' то значением arr
>будет массив длинной 4 и 1 элемент 192 второй 168 и
>т.д. Как тоже самое сделать только в shell?
>Или просто как нибудь вырезать цифры до точки.
sed :
# echo 192.168.1.1 | sed "/s/([^\\.])/\\1/"
или упомянутый Вами awk - что мешает вызвать awk из шела ?
>или упомянутый Вами awk - что мешает вызвать awk из шела ?
Слишком часто и слишком много надо раз. Иррационально.
А чем sed от awk отличается? Что awk что sed потоковые редакторы :)
>В awk есть функция plit. В неё задаёш строку, разделатель и массив.
>если написать в неё split(str,arr,'.') и передать str='192.168.2.67' то значением arr
>будет массив длинной 4 и 1 элемент 192 второй 168 и
>т.д. Как тоже самое сделать только в shell?
>Или просто как нибудь вырезать цифры до точки.
str='192.168.2.67'
IFS='.' a=($str)
теперь в массиве а отдельные числа
echo ${a[@]}только не забудьте сохранить/восстановить значение IFS
>
>str='192.168.2.67'
>IFS='.' a=($str)
>теперь в массиве а отдельные числа
>echo ${a[@]}
>
>только не забудьте сохранить/восстановить значение IFSА еще лучше вот так
a=(${str//./ })
echo ${a[@]}