Удаляю лишние символы и настраиваю строки

Как обычно в UNIX, решение может быть найдено посредством проверки справочных страниц.

И через 30 секунд после вызова man du вы должны были найти решение:

du -sh

-121--202416-

Я кое-что копался в формате mbox. Короткий ответ заключается в том, что, хотя нет RFC, указывающего формат mbox, уже в середине 1970-х годов пространство From + использовалось для разделения различных почтовых сообщений, объединенных в один текстовый файл.

В 1-м выпуске Unix от Bell Labs (ноябрь 1971 г.) есть почтовая команда, но исходный код потерян, поэтому я не уверен, как он работал. mbox появляется в 3-м издании . Исходный код для 5-го издания Unix (с июня 1974 года) восстановлен и видно, что маркер From+␣ уже используется для разделения сообщений. Затем используется синтаксис From, космос, имя без мест и последовательность (24-символьная временная метка, доступная для чтения человеком).

From+␣ line была введена процессом отправки, который добавил ее к сообщению, введенному отправителем, перед добавлением к почтовому ящику получателя. За этой практикой последовали последующие программы доставки почты, в том числе некогда популярная sendmail , которая зародилась с вариантов Unix от Беркли.

Ранние версии Berkeley Unix были дополнениями к версии Bell Labs. Второй дистрибутив программного обеспечения Berkeley от марта 1979 года уже имеет сложную почтовую программу, если мы сможем увидеть начало файловой структуры, которая позже сформирует sendmail. Код в head.c идентифицирует From+␣ маркер и вносит несколько изменений: имя должно быть 17 символов или меньше (что не сохранилось в эпоху сендмейла) и что может быть дополнительный текст между концом даты и новой строкой (что и произошло).

Преемники sendmail, такие как qmail , формализовали синтаксис mbox, включая обработку строк в почтовом сообщении, которые начинаются с From+␣, проблема, которая привела к разнообразию форматов mbox .

-121--173823-

function somepath () {
  [ -z "$1" ] && { pwd; return; }
  (cd -P -- "$1" && pwd)
}

Просто создает дочернюю оболочку (чтобы cd не влиял на текущую оболочку) и печатает cwd. (Редактируется в тесте для случая «no parameter»)

0
10.10.2018, 19:14
2 ответа
sed 's/^#/ /g;s/\\/ /g' file | xargs | sed 's/option3 /option3 \n/g'

a comment first: info about first: option1 option2 option3 
second: info about second: option1 option2 option3 
third: info about third: option1 option2 option3 
fourth: info about fourth: option1 option2 option3

sed 's/^#/ /gзаменяет #пустыми пробелами, а ^соответствует позиции #в строках. Затем sed s/\\/ /g'заменяет обратную косую черту \пробелами.

xargsвыстраивается в линию и создает равные пробелы между словами.

наконец, sedдобавляет новые строки после каждого слова "option3"

0
28.01.2020, 02:31

С одной программой sed:

sed -E '
    # remove leading comment chars
    s/^[[:blank:]]*#+[[:blank:]]*//

    # label "a" for branching
    :a
    # if trailing slash:
    /\\$/ {
        # read next line
        N
        # remove backslash, newline, leading whitespace and comment char 
        s/\\\n[[:blank:]]*#*[[:blank:]]*/ /
        # branch to label "a"
        ba
    }

    # remove blank lines
    /^[[:blank:]]*$/d
' test.txt

Perl довольно компактен, хотя :читать абзацы(-00)и заменять начальные пробелы и символы комментариев для каждой строки в абзаце (модификаторы /mи /g)и удалять обратную косую черту -новая строка.

perl -00 -lanE 's/^\s*#*\s*//mg; s/\\(?:\Z|\n)/ /g; say' test.txt
2
28.01.2020, 02:31

Теги

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