Как усечь вывод в BASH?
Например, если я "du file.name", как мне просто получить числовое значение и ничего более?
позднее добавление:
все решения работают отлично. Я решил принять наиболее информативный "вырезанный" ответ, потому что предпочитаю самый простой подход в файлах bash, которые, как предполагается, могут читать другие.





du | cut -f 1
Обыграй меня на 30 секунд :) Я удалил свой повторяющийся ответ и добавил вместо него альтернативный.
Я бы предпочел больше информации о разделителях и диапазонах, поскольку он использовал du только в качестве примера. Потом тоже с радостью удалю :)
Могу я просто скопировать вашу или мне придется изобретать свою? :-)
Пожалуйста, просто скопируйте, если вы думаете, что они в порядке - если не придумайте свои собственные
Я понятия не имею, что здесь за этикет - если вы хотите добавить детали к своим, я, вероятно, все равно могу просто удалить?
Не беспокойся. Мой ответ был быстрее, ваш - более полным. Итак, ваш был принят по праву, вот как работает этот сайт. Я получил свою долю голосов за. :-D
Если вы знаете, что такое разделители, то вырежьте - ваш друг
du | cut -f1
Вырезать по умолчанию до разделителей табуляции, поэтому в этом случае вы выбираете первое поле.
Вы можете изменить разделители: cut -d '' будет использовать пробел в качестве разделителя. (от Томалак)
Вы также можете выбрать отдельные позиции или диапазоны символов:
ls | cut -c1-2
Вы можете добавить что-то вроде «cut -d» -f 1-2 », чтобы указать, как изменить символы, которые вырезаны в качестве разделителей.
Я бы порекомендовал сократить, как говорили другие. Но другой альтернативой, которая иногда бывает полезна, поскольку она позволяет использовать любые пробелы в качестве разделителей, является использование awk:
du file.name | awk '{print $1}'
+1 Если бы разделителем мог быть любой пробел, тогда awk - самое надежное решение (даже если оно не так красиво, как использование cut).
Если вам просто нужно количество байтов в одном файле, используйте оператор -s.
SIZE=-s file.name
Это дает вам другой номер, чем du, но я не уверен, как именно вы его используете.
Это имеет то преимущество, что вам не нужно запускать du, а bash напрямую получает размер файла.
Трудно отвечать на подобные вопросы в вакууме, потому что мы не знаем, как вы собираетесь использовать данные. Знание этого может предложить совершенно другой ответ.
В исходном вопросе он сказал, что использование du было просто примером; ваш ответ не помогает с его вопросом (хотя на самом деле он может быть полезен для него, если его пример не был просто гипотетическим)
Да, я это читал. И я не интерпретировал это как «ду был просто примером».
Я не понимаю, как это используется. В каком контексте?
Пожалуйста, объясните: «Если вам просто нужно количество байтов в одном файле, используйте оператор -s». Если я наберу это в командной строке Bash, я получаю ошибку «имя_файла: команда не найдена» (для файла, существующего с таким именем). Как заставить работать оператор -s? Единственное, о чем я знаю, - это условное выражение, проверяющее, существует ли файл и не является ли он пустым: например, [[ -s file.name ]] && echo "yes", но это не говорит мне фактический размер.
опереди меня на 20 секунд :)