Пытаясь прочитать номер версии vim
, я получаю много дополнительных строк, которые мне нужно игнорировать. Я попытался прочитать руководство head
и попробовал следующую команду:
vim --version | head -n 1
Я хочу знать, правильный ли это подход?
Пытаясь прочитать номер версии vim
, я получаю много дополнительных строк, которые мне нужно игнорировать. Я попытался прочитать руководство head
и попробовал следующую команду:
vim --version | head -n 1
Я хочу знать, правильный ли это подход?
vim --version 2>&1 | sed 1q
:)
Проверьте, выводит ли ваш пакет эту информацию, stderr
поскольку @WilliamPursell предоставляет проверку.
Ответы:
Да, это один из способов получить первую строку вывода команды.
Если команда выводит что-либо в стандартную ошибку, которую вы хотели бы зафиксировать таким же образом, вам необходимо перенаправить стандартную ошибку команды в стандартный поток вывода:
utility 2>&1 | head -n 1
Есть много других способов захватить первую строку, включая sed 1q
(выйти после первой строки), sed -n 1p
(печатать только первую строку, но читать все), awk 'FNR == 1'
(печатать только первую строку, но снова читать все) и т. Д.
Я хотел бы использовать:
awk 'FNR <= 1' file_*.txt
Как указывает @Kusalananda, есть много способов записать первую строку в командной строке, но использование head -n 1
может быть не лучшим вариантом при использовании подстановочных знаков, поскольку он будет печатать дополнительную информацию. Изменение 'FNR == i'
на 'FNR <= i'
позволяет получить первые i строк.
Например, если у вас есть n файлов с именами file_1.txt, ... file_n.txt:
awk 'FNR <= 1' file_*.txt
hello
...
bye
Но с помощью head
подстановочных знаков напечатайте имя файла:
head -1 file_*.txt
==> file_1.csv <==
hello
...
==> file_n.csv <==
bye
head -qn1 file_*.txt