$ echo "a:b:c" | sed 's/^[^:]*:\([^:]*\):.*$//'
b
Talvez alguém possa me ajudar a encontrar (mais simplesmente) o equivalente a este comando awk seguinte com sed:
echo "first:second:third"|awk -F ':' '{print $2}'
second
Você pode usar cut
.
echo "first:second:third" | cut -f 2 -d ":"
Acho que sed
é a ferramenta errada para isso. awk
é provavelmente o mais limpo.
Isso também funciona
echo "a:b:c" | sed 's|.*:\(.*\):.*$||'
É salva o texto entre (...) como \ 1 e, em seguida, o substitui pela string inteira.
Alternativa Perl:
echo "first:second:third" | perl -F':' -lane 'print $F[1]'