
Может быть, кто-нибудь поможет мне найти (самый простой) эквивалент следующей команды awk с помощью sed:
echo "first:second:third"|awk -F ':' '{print $2}'
second
решение1
$ echo "a:b:c" | sed 's/^[^:]*:\([^:]*\):.*$/\1/'
b
решение2
Вы могли бы использовать cut
.
echo "first:second:third" | cut -f 2 -d ":"
Я думаю, sed
что это неподходящий инструмент для этого. awk
Вероятно, это самый чистый инструмент.
решение3
Это тоже работает.
echo "a:b:c" | sed 's|.*:\(.*\):.*$|\1|'
Сохраняет текст между (...) как \1, а затем заменяет им всю строку.
решение4
Альтернатива Perl:
echo "first:second:third" | perl -F':' -lane 'print $F[1]'