Нет папок в "/" на жестком диске, монтируется "/boot"

Если у вас есть Awk, который поддерживает регулярные выражения для разделителя записей RS , это можно сделать следующим образом:

awk 'BEGIN { RS = " +| *\\\\?\\n" } 1'

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

В основном мы рассматриваем файл как имеющий два разделителя записей: либо один или несколько пробелов, либо ноль или несколько пробелов, за которыми следует новая строка, которой может предшествовать необязательная обратная косая черта.

Разграничив записи таким образом, все, что нам нужно сделать, это вывести их, а затем установить разделитель выходных записей по умолчанию ( ORS ), который, конечно же, является новой строкой. Это достигается с помощью правила действия шаблона, состоящего из 1 .

Или задание конвейера с sed и tr , не используя ничего, чего нет в POSIX:

tr '\n' ' ' | sed -e 's/\\//g' -e 's/ \+/ /g' | tr ' ' '\n'

Замените символы новой строки пробелами. Затем сведите несколько пробелов к одному, удаляя обратную косую черту. Затем сопоставьте пробелы с новой строкой.

0
29.07.2015, 22:35
0 ответов

Теги

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