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

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

Tal vez alguien pueda ayudarme a encontrar (el más simple) el equivalente del siguiente comando awk con sed:

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

Respuesta1

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

Respuesta2

Podrías usar cut.

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

Creo que sedes la herramienta equivocada para esto. awkEs probablemente el más limpio.

Respuesta3

Esto también funciona

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

Guarda el texto entre (...) como \1 y luego lo sustituye por toda la cadena.

Respuesta4

Alternativa a Perl:

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

información relacionada