catを使用してファイルの最初の行を読み取るにはどうすればよいですか?


198

を使用してファイルの最初の行を読み取るにはどうすればよいcatですか?

回答:


374

あなたは必要ありませんcat

head -1 file

正常に動作します。


65
+1。あなたは猫全体ではなく頭だけが必要です:P(コマンドの尾もbashのしゃれの一部です)
SparK

DOESは、headファイル全体を読み込み、それをカット、またはそれだけで1行を読んでいますか?
CMCDragonkai、2015年

@CMCDragonkai、私はあなたがソースをチェックできると思います。
Carl Norum、2015年

2
最初の行だけを読み取ると思います-数百メガバイトのファイルをミリ秒単位で開きます。
Brian Haak

1
...とった!cat <(head file1) <(head file2)出典
James Owers、2015年


41

さまざまな方法があります。

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

21

を使用することもできますがcat file.txt | head -1、のように、headを直接使用することをお勧めしますhead -1 file.txt


16

これは、では不可能かもしれませんcat。使用する理由はありますcatか?

あなたが単にbashコマンドでそれを行う必要がある場合、これはあなたのために働くはずです:

head -n 1 file.txt

9

cat単独では不可能かもしれませんが、headこれを使用したくない場合:

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

2
私が使用するように特別に設計された行で「猫の無用な使用」を呼び出すのはばかげていると思いますcat
jkerian

この方法は、好きな線を選ぶことができるので素晴らしいです。
desgua 2013年

3
@desgua awkは素晴らしいですが、catここでは必要ありません。awk 'NR == 2 {print $0}' <file>同じことをします。(そして、はるかに、あなたが少しを学ぶ場合awk
エリック・ウィルソン

5

この質問がずっと続いていることに驚いています。mapfile前の組み込みのアプローチはまだ誰も提供していません。

IFS= read -r first_line <file

...で展開された変数にファイルの最初の行を配置します"$first_line"。これは簡単です。

さらに、readはbashに組み込まれており、この使用法はサブシェルを必要としないため、headまたはなどのサブプロセスを伴うアプローチよりもはるかに効率的ですawk


IFS=最初の部分は何ですか?
Florian Castellane、


正しい; この場合、クリアIFSすると、先頭と末尾の空白が読み取られた文字列から削除されなくなります。
Charles Duffy、

3

bash v4 +を使用している場合、外部コマンドは必要ありません

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

またはあなたが本当に欲しいなら cat

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

:)


2

以下のコマンドを使用して、CSVファイルまたは任意のファイル形式から最初の行を取得します。

head -1 FileName.csv
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.