проблема с форматированием текста с помощью tr

Обычно некоторые блоки резервируются для root, и они не учитываются как "доступные" в выводе df. Если ваша файловая система имеет 5% зарезервированных блоков и занимает 861 ГБ, то осталось 95%, или около 817 ГБ, что соответствует тому, что вы видите.

Этот вопрос U+L может быть уместен: Зарезервированное место для root в файловой системе - зачем?

1
21.09.2018, 14:07
2 ответа

Вы можете использовать эту команду sed

sed '/,/{N;s/\n//;s/$//;}' myfile.txt
1
27.01.2020, 23:25

tr одновременно просматривает только один символ, поэтому она не работает, когда вам нужно проверить контекст.

Поскольку разделы разделены пустыми строками, режим абзацев awk отлично подходит:

awk -vRS= '{gsub(/\n/, ""); print $0 "\n"}' myfile.txt

Установка RS пустыми загружает «записи», разделенные пустыми строками, и для каждого record мы снова удаляем символы новой строки, а затем печатаем запись с дополнительной новой строкой.

То же самое и в Perl, но с двумя дополнительными символами новой строки здесь, потому что Perl действительно загружает последний символ новой строки, как любой другой символ:

perl -00ne 's/\n//g; print "$_\n\n"' myfile.txt

Оба они будут обрабатывать несколько пустых строк так же, как одну.


Мы могли бы сделать это с помощью sed, но это немного сложнее, чем моя первоначальная попытка, если нам нужно поддерживать блоки из более чем двух строк.

sed -n 'H; $bL; /./d; :L; x; s/\n//g; s/$/\n/; p;' myfile.txt

Добавить текущую строку в буфер хранения ( H ), затем проверить, является ли это последней строкой ( $ ), и в этом случае перейти к L ( bL ). Если нет, проверьте, есть ли какие-либо символы ( /./ ), и если да, удалите ( d ) строку и вернитесь к началу.

В противном случае (строка пуста) перейдите к L , где мы меняем местами ( x ) буфер удержания и текущую строку (пространство шаблона), удаляем новые строки ( s / \ n // g ), добавьте еще один в конец ( s / $ / \ n / ) и неявно распечатайте пространство шаблонов, теперь содержащее строки, которые мы собрали с предыдущего пустая строка. Здесь дополнительные пустые строки приведут к появлению дополнительных пустых строк.

2
27.01.2020, 23:25

Теги

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