correspondência de regex
Você também pode conseguir algo semelhante usando sed
:
$ cat dept.dat | while read line
do
echo "$line"
echo "$line" | sed -e 's/.*: \(.*\) .*//'
done
Você também pode usar awk
:
$ cat dept.dat | while read line
do
echo "$line"
echo "$line" | awk '{sub(/.*nt: /,""); sub(/ .*/,""); print }'
done
Você também pode usar grep
:
$ cat dept.dat | while read line
do
echo "$line"
echo "$line" | grep -oP '(?<=: ).*(?= )'
done
NOTA: A solução grep
assume uma versão recente de grep
que inclui o PCRE (suporte à expressão regular Perl).
A principal diferença dessas soluções em relação a cut
é que elas combinam com base em padrões em que a solução cut
assume uma estrutura mais rígida (posições de caractere específicas) para os dados de entrada.
correspondência posicional estática
Uma alternativa ao uso de cut
é usar a função awk
do substr
:
$ cat dept.dat | while read line
do
echo "$line"
echo "$line" | awk '{print substr($0,13,16)}'
done