awk
usa código criado como padrões com ações. O "padrão" que você tem aqui é que você gostaria de fazer algo apenas com a primeira linha, e a "ação" é "imprimir a segunda coluna (e então sair)":
awk 'NR == 1 { print $2; exit }' file
O exit
é uma otimização opcional nesse caso e pode ser removida (não há outra linha para a qual NR
seria 1). NR
significa "o número ordinal da linha atual" ou "o número de linhas lidas até agora".
Nesse caso simples, construindo a partir da sua head
tentativa:
head -n 1 file | while read -r num word; do printf '%s\n' "$word"; done
Alternativamente,
read -r num word <file
printf '%s\n' "$word"
realizaria o mesmo que estamos interessados apenas na primeira linha.
... mas analisar texto no próprio shell é passível de erros e deve ser evitado . Com um pequeno exemplo como este, funcionaria bem.
Você usou a palavra slice no título, que em inglês tem o mesmo significado que cut , que é outro utilitário Unix. Pode ser usado aqui, mas é um pouco simplista e como você o usa depende do (s) caractere (s) delimitador (es) entre as duas colunas de dados.
-
Se você tiver uma única guia entre as colunas:
head -n 1 file | cut -f 2
-
Se você tem três espaços entre as colunas:
head -n 1 file | cut -d ' ' -f 4