Как удалить имя файла из конца du-h вывод

возьмите пример:

$ du -h file_size.txt
112K file_size.txt

Как я удалил бы имя файла из вывода du-h

Я попытался использовать sed, чтобы искать строку (имя файла) и ничем заменить его, но это не работало (команда ниже)

du -h file_size.txt | sed 's/ 'file_size.txt'//'

Кто-то мог указать почему эта работа привычки или возможно лучший способ сделать это?

Отношения

Paul

9
задан Carl Norum 11 February 2010 в 19:38
поделиться

7 ответов

У вас неправильные кавычки в этой командной строке. Самым простым, вероятно, является:

du -h file_size.txt | cut -f -1

Чтобы исправить вашу командную строку:

du -h file_size.txt | sed 's/file_size.txt//'

Поскольку в вашем сообщении есть тег awk :

du -h file_size.txt | awk '{ print $1 }'
14
ответ дан 4 December 2019 в 07:47
поделиться

@OP если ваши данные имеют отдельные поля, например пробелы/табуляции, то проще использовать инструменты типа awk/cut для разделения их на эти поля разделителями. Использование regex (например, sed ) не обязательно. Еще лучше просто использовать оболочку.

различными способами

$ du -h file | awk '{print $1}'
4.0K

$ du -h file | cut -f1
4.0K

$ set -- $(du -h file) #using shell only
$ echo $1
4.0K
0
ответ дан 4 December 2019 в 07:47
поделиться

Это немного более подробно, но в любом случае это еще один способ добиться того, что вы хотите:

du -h file_size.txt |while read x junk; do echo $x; done
0
ответ дан 4 December 2019 в 07:47
поделиться
du -h file_size.txt | cut -f1
9
ответ дан 4 December 2019 в 07:47
поделиться

Простой вывод первого столбца. Вот решение awk

du -h test.txt  | awk '{ print $1 }'
5
ответ дан 4 December 2019 в 07:47
поделиться

Ваша исходная команда работала бы, если бы вы не включали пробел в регулярное выражение sed и вкладки вывода du.

0
ответ дан 4 December 2019 в 07:47
поделиться

вывод du -h разделен [табуляцией].

du -h file_size.txt |sed 's/[\t].*//g'
0
ответ дан 4 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: