Não vejo como fazer com que cut(1)
faça o que você deseja. Acredito que você esteja correto em acreditar que, se você tiver mistas de delimitadores de espaço em branco, a melhor alternativa é awk(1)
.
O delimitador padrão no awk é o espaço em branco para uma mudança sem espaço em branco.
O padrão para o corte é o caractere de tabulação.
Posso dizer ao recorte para usar espaço não-branco em delimitadores de espaço em branco?
Por exemplo,
a:
foo bar
cut -d' ' -f2 a
imprime apenas um espaço, mas deve imprimir bar .
awk '{ print $2; } a
barra de impressão.
Claro, muitas vezes você pode simplesmente usar o awk como um substituto de corte se precisar dessa semântica. Mas o corte tem a vantagem de ser muito eficiente em termos de memória. Especialmente, ele não carrega colunas não utilizadas na memória (ao contrário de alguns awks).
Você pode pré-processar seus dados com algo como tr -s ' ' '\t'
. Mas você não obteria nenhum benefício a menos que suas linhas fossem muito longas. (Quanto tempo? Medir e descobrir.)
Tags shell