Aqui está um exemplo de como cut
dividir a entrada em campos usando um delimitador de espaço e obter o segundo campo:
cut -f2 -d' '
Como o delimitador pode ser definido como uma tabulação, em vez de um espaço?
Responder1
Dois caminhos:
Pressione Ctrl+ Ve depois Tabpara usar "literalmente"inserção citada.
cut -f2 -d' ' infile
ou escreva assim para usarCitação ANSI-C:
cut -f2 -d$'\t' infile
A $'...'
forma de aspas não faz parte da linguagem shell POSIX (ainda não), mas funciona pelo menos em ksh, mksh, zsh e Busybox além do Bash.
Responder2
Guia é o padrão.
Veja ocortar página de manual.
-d delim
Use delim as the field delimiter character instead of the tab
character.
Então você pode simplesmente escrever
cut -f 2
Responder3
awk -F '\t' '{ print $2 }' inputfile
Isso extrai o segundo campo delimitado por tabulação de cada linha de entrada de inputfile
.
Responder4
Alternativamente, pode-se envolver cut em uma função.
function getColumns ()
{
local -r delimiter="${1:?}"
local -r columns="${2:?}"
if [[ "$delimiter" == '\t' || "$delimter" == "tab" ]]; then
cut "--fields=${columns}"
return
fi
cut "--delimiter=${delimiter}" "--fields=${columns}"
}