возьмите пример:
$ du -h file_size.txt
112K file_size.txt
Как я удалил бы имя файла из вывода du-h
Я попытался использовать sed, чтобы искать строку (имя файла) и ничем заменить его, но это не работало (команда ниже)
du -h file_size.txt | sed 's/ 'file_size.txt'//'
Кто-то мог указать почему эта работа привычки или возможно лучший способ сделать это?
Отношения
Paul
У вас неправильные кавычки в этой командной строке. Самым простым, вероятно, является:
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 }'
@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
Это немного более подробно, но в любом случае это еще один способ добиться того, что вы хотите:
du -h file_size.txt |while read x junk; do echo $x; done
Простой вывод первого столбца. Вот решение awk
du -h test.txt | awk '{ print $1 }'
Ваша исходная команда работала бы, если бы вы не включали пробел в регулярное выражение sed и вкладки вывода du.
вывод du -h
разделен [табуляцией].
du -h file_size.txt |sed 's/[\t].*//g'