Добавить к текущей строке, если предыдущая строка соответствует - PullRequest
0 голосов
/ 12 июня 2018

Я ищу команду awk/sed для добавления символа в текущую строку, если предыдущая строка имеет шаблон?

Пример:

SELECT customer from Cust_tab WHERE forename = "XXX"                        
sname = "YYY"
postcode="ZZ ZZZ"

Ожидается:


SELECT customer from Cust_tab WHERE forename = "XXX"   
AND sname = "YYY"                      
AND postcode="ZZ ZZZ"

Я хочу добавить AND в начало строки, если предыдущая / первая строка имеет =.Пробовал делать

sed 's/WHERE.*/& AND/g' 

, но это добавляет к концу строки, а не к началу и не может повторить это для 3-й строки в файле

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

с awk

$ awk 'e{$0="AND " $0; e=0}1; /=/{e=1}' file
0 голосов
/ 12 июня 2018

РЕДАКТИРОВАТЬ: Следующий код может помочь вам, который установит флаг, когда строка имеет строку SELECT, и до появления пустой строки он будет продолжать добавлять AND строкуна все строки.

awk '/^SELECT.*=/{print;flag=1;next} !NF{flag=""} flag{print "AND ",$0}' Input_file

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

awk '/=/{print;getline;print "AND " $0}' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...