Gibt es ein Sed-Äquivalent zu awk -F ':' '{print $2}'?

Gibt es ein Sed-Äquivalent zu awk -F ':' '{print $2}'?

Vielleicht kann mir jemand helfen, (am einfachsten) das Äquivalent des folgenden awk-Befehls mit sed zu finden:

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

Antwort1

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

Antwort2

Du könntest benutzen cut.

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

Ich denke, seddas ist das falsche Werkzeug dafür. awkIst wahrscheinlich das sauberste.

Antwort3

Das funktioniert auch

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

Dabei wird der Text zwischen (...) als \1 gespeichert und anschließend durch den gesamten String ersetzt.

Antwort4

Perl-Alternative:

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

verwandte Informationen