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

2

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
    
por almorel 17.11.2011 / 21:08

4 respostas

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

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.

    
por 17.11.2011 / 21:18
1

Isso também funciona

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

É salva o texto entre (...) como \ 1 e, em seguida, o substitui pela string inteira.

    
por 17.11.2011 / 21:41
1

Alternativa Perl:

echo "first:second:third" | perl -F':' -lane 'print $F[1]'
    
por 17.11.2011 / 21:47

Tags