Я хочу посчитать количество строк в файле, используя wc -l
, но только вывести число без следующего пробела и имени файла. Редактировать из комментариев: имя файла может содержать цифры.
В настоящее время, если я сделаю:
wc -l /path/to/file
Для файла с 176 строками вывод будет:
176 /path/to/file
Это внутри скрипта bash, и полученное число будет присваивается в качестве значения переменной.
Я использовал бы:
<file wc -l
, Который contarily к cat file | wc -l
не должен разветвлять оболочку и выполнять другой процесс (и работает быстрее):
% time </tmp/ramdisk/file wc -l
8000000
wc -l < /tmp/ramdisk/file 0,07s user 0,06s system 97% cpu 0,132 total
% time cat /tmp/ramdisk/file | wc -l
8000000
cat /tmp/ramdisk/file 0,01s user 0,16s system 80% cpu 0,204 total
wc -l 0,09s user 0,10s system 94% cpu 0,203 total
(/tmp/ramdisk/file
был сохранен в электронном диске для вынимания ввода-вывода и кэширующийся из уравнения.)
Однако для маленьких файлов действительно различие neglectable.
<час>еще один путь был бы:
wc -l file | cut -d ' ' -f 1
, Который в моих тестах выполняет приблизительно то же как <file wc -l
.
Можно сделать это с простым одним лайнером с помощью кошки. cat deluge1.log | wc -l
Ответ, слишком простой для требования длинного вытянутого ответа.