如果前一行模式匹配,则追加到当前行

时间:2018-06-12 11:27:39

标签: shell unix awk sed

如果前一行有模式,我正在寻找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 :(得分:3)

编辑: 下面的代码可以帮助您在行有字符串SELECT时设置标记,直到空行出现它会继续添加AND字符串到所有行。

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

您的问题不是很明确,但根据您的陈述和展示的样本,请您试着跟随并告诉我这是否有帮助。

awk '/=/{print;getline;print "AND " $0}' Input_file

答案 1 :(得分:2)

awk

$ awk 'e{$0="AND " $0; e=0}1; /=/{e=1}' file