Shell 如果上一行模式匹配,则追加到当前行
我正在寻找Shell 如果上一行模式匹配,则追加到当前行,shell,unix,awk,sed,Shell,Unix,Awk,Sed,我正在寻找awk/sed命令,如果前一行有模式,则将字符附加到当前行 例如: SELECT customer from Cust_tab WHERE forename = "XXX" sname = "YYY" postcode="ZZ ZZZ" 预期: 如果前一行/第一行有=,我想在行首添加和。试着做 sed 's/WHERE.*/& AND/g' 但这会添加到行尾,而不是开始,并且无法在文件的第三行重复此操作。编辑:以下代码可能
awk/sed
命令,如果前一行有模式,则将字符附加到当前行
例如:
SELECT customer from Cust_tab WHERE forename = "XXX"
sname = "YYY"
postcode="ZZ ZZZ"
预期:
如果前一行/第一行有
=
,我想在行首添加和。试着做
sed 's/WHERE.*/& AND/g'
但这会添加到行尾,而不是开始,并且无法在文件的第三行重复此操作。编辑:以下代码可能会帮助您设置一个标志,当一行有字符串时,选择该字符串,直到出现空行,它将继续向所有行添加和
字符串
awk '/^SELECT.*=/{print;flag=1;next} !NF{flag=""} flag{print "AND ",$0}' Input_file
你的问题不是很清楚,但基于你的陈述和展示的样品,你可以尝试下面的内容,并让我知道这是否有帮助
awk '/=/{print;getline;print "AND " $0}' Input_file
编辑:下面的代码可能会帮助您设置一个标志,当一行有字符串时,选择
,直到空行出现,它将继续向所有行添加和字符串
awk '/^SELECT.*=/{print;flag=1;next} !NF{flag=""} flag{print "AND ",$0}' Input_file
你的问题不是很清楚,但基于你的陈述和展示的样品,你可以尝试下面的内容,并让我知道这是否有帮助
awk '/=/{print;getline;print "AND " $0}' Input_file
使用awk
$ awk 'e{$0="AND " $0; e=0}1; /=/{e=1}' file
使用awk
$ awk 'e{$0="AND " $0; e=0}1; /=/{e=1}' file
你为自己做了什么?如果你想在前一行包含=
时匹配,请使用用于提问的命令发布你的全部努力,为什么您要尝试匹配字符串WHERE
?您自己尝试了什么?使用用于问题的命令发布您的全部努力如果您想匹配上一行包含=
,为什么您要尝试匹配字符串WHERE
?谢谢。但它不适用于后续行:从Cust_选项卡中选择customer,其中forename=“XXX”和sname=“YYY”postcode=“ZZ ZZZ”和postcode=“ZZ ZZZ”@Dev,请检查我的编辑代码,并让我知道这是否对您有帮助?我得到了类似的结果。从客户选项卡中选择客户,其中forename=“XXX”和sname=“YYY”postcode=“ZZ ZZZ”和postcode=“ZZ ZZZ”AND@Dev,说实话,我不能理解,请澄清你的问题,如果可能的话,再报告一次样品。谢谢。但它不适用于后续行:从Cust_选项卡中选择customer,其中forename=“XXX”和sname=“YYY”postcode=“ZZ ZZZ”和postcode=“ZZ ZZZ”@Dev,请检查我的编辑代码,并让我知道这是否对您有帮助?我得到了类似的结果。从客户选项卡中选择客户,其中forename=“XXX”和sname=“YYY”postcode=“ZZ ZZZ”和postcode=“ZZ ZZZ”AND@Dev,说实话,我无法理解,请澄清你的问题,如果可能的话,再报告样品。谢谢@karakfaWorks@karakfa