У меня есть ряд строк из истории, которые были обернутый:Если строка начинается с определенным символом, удалить предыдущую строку
Little Sue went
out to play, and
found herself a log.
The log was
heavy.
Я хотел бы разворачивать текст. Если строка начинается со строчной буквы, то предыдущий символ новой строки должны быть удалены, и заменены пробелами, с этим конечным результатом:
Little Sue went out to play, and found herself a log.
The log was heavy.
Я нашел несколько примеров СЭД делает шаблон согласования по новой строки, но они всегда для удаления новой строки после соответствие шаблону. Я попытался создать некоторые команды в sed, но он работает не совсем правильно. Кажется, они действуют только на каждой другой линии. Я думаю, это потому, что sed заканчивает пару строк, печатает их, а затем бросает их, прежде чем потреблять следующие строки.
sed 'N;/\n[a-z]/s/\n/ /;P;D' wrapped.txt
Little Sue went out to play, and
found herself a log.
The log was heavy.
sed 'N;/\n[a-z]/s/\n\([a-z]\)/ \1/' wrapped.txt
Little Sue went out to play, and
found herself a log.
The log was
heavy.
У меня есть GNU sed 4.2.2 на моей машине Fedora 20. Кто-нибудь знает, способен ли sed на то, что я хочу? Или, если sed не будет делать, то любая программа или язык, общий для ящиков Linux, будет в порядке.
В своем первом SED растворе вы почти там! Однако помните, что после удаления новой строки пространство шаблонов после печати будет полностью удалено, и, следовательно, обработка начнется снова со следующей строки. Чтобы восстановить пространство шаблонов на две строки, вам нужно вернуться к началу, т. Е. ': A; N;/\ n [az]/s/\ n//; ta; P; D', тем самым предотвращая команды из переработка. – potong