2011-12-15 3 views
-4

У меня есть файл, который структурирован как несколько разделов, разделенных определенным текстом foo. Я хотел бы присоединиться ко всем линиям в регионе, но оставить разделители на месте. Короче говоря, я хочу это так:Обрезка новых символов строки с помощью BASH

ввод текста файла:

bar 
bar 
bar bar 
foo 
bar 
bar bar bar 

выходной текстовый файл:

bar bar bar bar 
foo 
bar bar bar bar 

То есть, символ новой строки допустимо только тогда, когда следующая строка foo

Просьба помочь мне с awk/sed/perl скриптом для того же самого.

+0

Это не очень легко понять. Было бы справедливым сказать, что вы хотите объединить все линии, за исключением отдельных разделительных линий? –

+0

Точно так же – Greenhorn

+1

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

ответ

4
awk '/^foo$/ { if (NR>1) printf("\n"); print; next } { printf("%s ", $0) }' 
+1

Можно упростить, выполнив 'awk '!/Foo/{printf ("% s ", $ 0); next} {print" \ n "$ 0}'' –

+0

@Jaypal Вы должны отправить это как ответ. Также поставьте 'END {printf (" \ n ")}', чтобы файл заканчивался новой строкой. –

+1

Я не могу Майкла, это было вдохновлено вашим решением. Если вы в порядке, вы можете добавить его в качестве альтернативного решения своего ответа. Я слежу за вашими ответами и блогами (применял абстракцию) с последних нескольких месяцев, и они помогли мне многому научиться 'awk'. :) –

Смежные вопросы