Como leio a primeira linha de um arquivo usando cat?

199

Como leio a primeira linha de um arquivo usando cat?

Doboy
fonte

Respostas:

375

Você não precisa cat.

head -1 file

vai funcionar bem.

Carl Norum
fonte
65
+1. você só precisa a cabeça não todo o gato: P (a cauda comando é parte do pun festa também)
faísca
Será que headler o arquivo inteiro e cortá-la, ou ele lê apenas a linha 1?
CMCDragonkai
@CMCDragonkai, acho que você pode verificar a fonte .
Carl Norum
2
Acho que lê apenas as primeiras linhas - abre um arquivo de centenas de megabytes em milissegundos.
Brian Haak
1
...Entendi! cat <(head file1) <(head file2). Fonte
James Owers
72

Você não usa, em headvez disso.

head -n 1 file.txt
Orbling
fonte
41

Existem muitas maneiras diferentes:

sed -n 1p file
head -n 1 file
awk 'NR==1' file
JJJ
fonte
21

Você poderia usar cat file.txt | head -1, mas provavelmente seria melhor usar a cabeça diretamente, como em head -1 file.txt.

Mike Pelley
fonte
16

Isso pode não ser possível com cat. Existe um motivo para você usar cat?

Se você simplesmente precisar fazer isso com um comando bash, isso deve funcionar para você:

head -n 1 file.txt
mwcz
fonte
9

catsozinho pode não ser possível, mas se você não quiser usar headisso funciona:

 cat <file> | awk 'NR == 1'
josh.trow
fonte
2
Suponho que é bobagem chamar um 'uso inútil de gato' em uma linha projetada especificamente para uso cat, não é?
jkerian
Esse método é ótimo porque você pode escolher qualquer linha que desejar.
Desgua 28/11
3
@desgua awké ótimo, mas você não precisa cataqui. awk 'NR == 2 {print $0}' <file>faz a mesma coisa. (E muito mais, se você aprender um pouco awk.
Eric Wilson
5

Estou surpreso que essa pergunta já exista há muito tempo e ninguém forneceu a abordagem interna de pré-mapfile ainda.

IFS= read -r first_line <file

... coloca a primeira linha do arquivo na variável expandida por "$first_line", fácil assim.

Além disso, como readé incorporado ao bash e esse uso não requer sub-shell, é significativamente mais eficiente do que abordagens que envolvem subprocessos como headou awk.

Charles Duffy
fonte
qual é a IFS=parte do começo?
Florian Castellane
meu mal, aqui está uma explicação: unix.stackexchange.com/questions/184863/…
Florian Castellane
Certo; nesse caso, a limpeza IFSevita que os espaços em branco à esquerda e à direita sejam removidos da sequência lida.
Charles Duffy
3

Você não precisa de nenhum comando externo se tiver o bash v4 +

< file.txt mapfile -n1 && echo ${MAPFILE[0]}

ou se você realmente quer cat

cat file.txt | mapfile -n1 && echo ${MAPFILE[0]}

:)

jm666
fonte
2

Use o comando abaixo para obter a primeira linha de um arquivo CSV ou de qualquer formato de arquivo.

head -1 FileName.csv
Praveenkumar Sekar
fonte