Существует ли эквивалент awk -F ':' '{print $2}' в sed?

Существует ли эквивалент awk -F ':' '{print $2}' в sed?

Может быть, кто-нибудь поможет мне найти (самый простой) эквивалент следующей команды 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]'

Связанный контент