Como leio a primeira linha de um arquivo usando cat?


199

Como leio a primeira linha de um arquivo usando cat?

Respostas:


375

Você não precisa cat.

head -1 file

vai funcionar bem.


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

41

Existem muitas maneiras diferentes:

sed -n 1p file
head -n 1 file
awk 'NR==1' file

21

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


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

9

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

 cat <file> | awk 'NR == 1'

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.


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]}

:)


2

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

head -1 FileName.csv
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.