![Существует ли эквивалент awk -F ':' '{print $2}' в sed?](https://rvso.com/image/567614/%D0%A1%D1%83%D1%89%D0%B5%D1%81%D1%82%D0%B2%D1%83%D0%B5%D1%82%20%D0%BB%D0%B8%20%D1%8D%D0%BA%D0%B2%D0%B8%D0%B2%D0%B0%D0%BB%D0%B5%D0%BD%D1%82%20awk%20-F%20'%3A'%20'%7Bprint%20%242%7D'%20%D0%B2%20sed%3F.png)
Может быть, кто-нибудь поможет мне найти (самый простой) эквивалент следующей команды 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]'