Existe um sed equivalente a awk -F ':' '{print $2}'?

Existe um sed equivalente a awk -F ':' '{print $2}'?

Talvez alguém possa me ajudar a encontrar (da maneira mais simples) o equivalente a este seguinte comando awk com sed:

echo "first:second:third"|awk -F ':' '{print $2}'
second

Responder1

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

Responder2

Você poderia usar cut.

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

Eu acho que sedé a ferramenta errada para isso. awké provavelmente o mais limpo.

Responder3

Isso também funciona

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

Salva o texto entre (...) como \1 e depois o substitui por toda a string.

Responder4

Alternativa Perl:

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

informação relacionada