усечь вывод в BASH - PullRequest
       8

усечь вывод в BASH

8 голосов
/ 27 октября 2008

Как мне усечь вывод в BASH?

Например, если я "du file.name", как мне получить числовое значение и ничего более?

позднее добавление:
все решения работают отлично. Я решил принять самый поразительный ответ «вырезать», потому что я предпочитаю самый простой подход в файлах bash, которые другие должны читать.

Ответы [ 4 ]

11 голосов
/ 27 октября 2008

Если вы знаете, что разделители, то вырежьте это ваш друг

du | cut -f1

Вырезать по умолчанию разделители табуляции, поэтому в этом случае вы выбираете первое поле.

Вы можете изменить разделители: cut -d '' будет использовать пробел в качестве разделителя. (от Томалак )

Вы также можете выбрать отдельные позиции символов или диапазоны:

ls | cut -c1-2
10 голосов
/ 27 октября 2008

Я бы порекомендовал вырезать, как говорили другие. Но другой альтернативой, которая иногда полезна, потому что она допускает любые пробелы в качестве разделителей, является использование awk:

du file.name | awk '{print $1}'
6 голосов
/ 27 октября 2008
du | cut -f 1
1 голос
/ 27 октября 2008

Если вам просто нужно количество байтов в одном файле, используйте оператор -s.

SIZE=-s file.name

Это дает вам номер, отличный от du, но я не уверен, как именно вы это используете.

Преимущество этого в том, что вам не нужно запускать du, а bash позволяет получить размер файла напрямую.

Трудно ответить на подобные вопросы в вакууме, потому что мы не знаем, как вы собираетесь использовать данные. Знание этого может предложить совершенно другой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...