LINUX.ORG.RU

Обработка строк копировать название секции в каждую строку

 , ,


0

1

Есть файл:

+Text1 
     Sub1
     Sub2
     Sub3
+Text2
     Sub1
     Sub2
     Sub3
Как сделать что бы оно выглядело так:
+Text1 
Text1 Sub1
Text1 Sub2
Text1 Sub3
+Text2
Text2 Sub1
Text2 Sub2
Text2 Sub3
То есть название секции вписать в каждую строку (но без + в начале) Понимаю что смотреть в сторону sed или awk... но туплю.


$ echo '+Text1 
Sub1
Sub2
Sub3
+Text2
Sub1
Sub2
Sub3' |awk '/^\+/{print;sub(«\+»,"");a=$1;next}{print a" «$0}'
+Text1
Text1 Sub1
Text1 Sub2
Text1 Sub3
+Text2
Text2 Sub1
Text2 Sub2
Text2 Sub3
tides
()

awk '/^+/{sub(/^+/,"",$1);S=$1;print «+»$0}(/^ /){$0=S""$0;print}'
Выражение в (/^ /) измените по вкусу для изменения количества пробелов.

Также можно perl -pe '$s=$1 if /^\+(\S+)/; s/^ +/$s /;'

AITap ★★★★★
()

$ sed -n ';p;:a;N;/\n+[^\n]*$/! {s/^+\([^\n]*\)\(.*\)\n\([^\n]*\)$/+\1\2\n\1\3/;$ bb; ba;};:b;s/[^\n]*\n//;p;s/.*\n//;ba'

первое, что пришло в голову

anarquista ★★★★★
()

man awk

или тупи дальше - судя по твоим темам, больше ничего другого ты не умеешь

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.