Como você corta a casca?

0

por exemplo:

Digamos que este é um arquivo num

1.   hi
2.   hello
3.   hey

Como faço para remover os espaços em branco apenas para obter o olá?

$ head -1 num | (what should be here to make it below)
hi
    
por Tree Garen 27.01.2018 / 08:02

2 respostas

2

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.

  1. Se você tiver uma única guia entre as colunas:

    head -n 1 file | cut -f 2
    
  2. Se você tem três espaços entre as colunas:

    head -n 1 file | cut -d ' ' -f 4
    
por 27.01.2018 / 09:29
0

Depende se você deseja a primeira linha ou uma linha específica ( foo é o seu arquivo).

Se você quiser apenas dividir uma linha específica, use

$ awk 'NR==1 { print $2; exit}' foo
hi
$ awk 'NR==2 { print $2; exit}' foo
hello

Se você quiser selecionar a linha com base no conteúdo, use

$ awk '/1./ { print $2; exit }' foo
hi
$ awk '/2./ { print $2; exit }' foo
hello
$ awk '$1 ~ 2. { print $2; exit }' foo
hello
$ awk '/hello/ { print $2; exit }' foo
hello

Em todos os casos, o exit garante que somente a primeira correspondência seja impressa (e também impede o processamento de todo o arquivo).

    
por 27.01.2018 / 09:27

Tags