Назад | Перейти на главную страницу

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

Может быть, кто-нибудь может помочь мне найти (наиболее просто) эквивалент этой следующей команды awk с помощью sed:

echo "first:second:third"|awk -F ':' '{print $2}'
second
$ echo "a:b:c" | sed 's/^[^:]*:\([^:]*\):.*$/\1/'
b

Вы могли бы использовать cut.

echo "first:second:third" | cut -f 2 -d ":"

думаю sed не подходит для этого. awk наверное самый чистый.

Это тоже работает

echo "a:b:c" | sed 's|.*:\(.*\):.*$|\1|'

Is сохраняет текст между (...) как \ 1, а затем заменяет им всю строку.

Альтернатива Perl:

echo "first:second:third" | perl -F':' -lane 'print $F[1]'