Як прочитати перший рядок файлу за допомогою кота?


Відповіді:


378

Вам не потрібно cat.

head -1 file

буде добре працювати.


65
+1. тобі потрібна лише голова, а не вся кішка: P (командний хвіст теж є частиною
гриферу

Чи headчитає весь файл і вирізає його чи він читає лише 1 рядок?
CMCDragonkai

@CMCDragonkai, я думаю, ви можете перевірити джерело .
Карл Норум

2
Я думаю, що він читає лише перші рядки - він відкриває файл сотень мегабайт в мілісекундах.
Брайан Хаак

1
...зрозумів! cat <(head file1) <(head file2). Джерело
James Owers


41

Існує багато різних способів:

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

21

Ви можете використовувати cat file.txt | head -1, але було б, ймовірно, краще використовувати голову безпосередньо, як в head -1 file.txt.


16

Це може бути неможливо за допомогою cat. Чи є причина, яку вам доведеться використовувати cat?

Якщо вам просто потрібно зробити це за допомогою команди bash, це повинно працювати для вас:

head -n 1 file.txt

9

catпоодинці це не можливо, але якщо ви не хочете використовувати headце, виконайте вказані нижче дії.

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

2
Я вважаю, що нерозумно називати "марним використанням кота" на лінії, спеціально розробленій для використання cat, чи не так.
jkerian

Цей метод чудовий тим, що ви можете вибрати будь-яку потрібну вам лінію.
десгуа

3
@desgua awkчудово, але тут вам не потрібно cat. awk 'NR == 2 {print $0}' <file>робить те саме. (І багато іншого, якщо ви навчитеся трохи awk.
Ерік Вілсон,

5

Я здивований, що це питання існує до тих пір, як це було, і ще ніхто не запропонував вбудований підхід до картографічного файлу.

IFS= read -r first_line <file

... ставить перший рядок файлу в змінну, розширену на "$first_line", просто.

Більше того, оскільки readвбудований у bash і для цього використання не потрібна підзарядка, це значно ефективніше, ніж підходи, що включають підпроцеси, такі як headабо awk.


яка IFS=частина на початку?
Флоріан Кастеллан

мені погано, ось пояснення: unix.stackexchange.com/questions/184863/…
Флоріан Кастеллан

Правильно; в цьому випадку очищення IFSне дозволяє позбавити пробілів проміжних та кінцевих пробілів із прочитаного рядка.
Чарльз Даффі

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.