
linux如何在某两个关键字之间再作替换
原始文件为AAACCC(DDD)FFF;BBBAAACCC(EEE);CCC;需要修改为AAADDD(DDD)FFF;BBBAAAEEE(EEE);CCC;需要做的事是,...
原始文件为
AAA CCC (DDD)
FFF ;
BBB AAA CCC
(EEE) ;
CCC ;
需要修改为
AAA DDD (DDD)
FFF ;
BBB AAA EEE
(EEE) ;
CCC ;
需要做的事是,先寻找AAA和“;”之间的字段(可能为多行),再查找括号内的字段(DDD或EEE),最后将CCC替换为对应的字段。
如何解决?最好通过sed awk 等命令解决 展开
AAA CCC (DDD)
FFF ;
BBB AAA CCC
(EEE) ;
CCC ;
需要修改为
AAA DDD (DDD)
FFF ;
BBB AAA EEE
(EEE) ;
CCC ;
需要做的事是,先寻找AAA和“;”之间的字段(可能为多行),再查找括号内的字段(DDD或EEE),最后将CCC替换为对应的字段。
如何解决?最好通过sed awk 等命令解决 展开
1个回答
展开全部
1,将要处理的文件:
$cat file2
AAA CCC (DDD)
FFF;
BBB AAA CCC
(EEE);
CCC;
BBB AAA CCC
DDD FFF
(EEE);
2,你想要结果使用的处理命令(awk命令都在一行上)及结果:
$awk 'BEGIN {miline="";} {miline=miline"\n"$0;if(match($0,/;$/)){i=index(miline,"(");if(i>0){j=index(miline,")");replace=substr(miline,i+1,j-i-1);sub(/CCC/,replace,miline);}sub(/\n/,"",miline);print miline;miline="";} }' file2
AAA DDD (DDD)
FFF;
BBB AAA EEE
(EEE);
CCC;
BBB AAA EEE
DDD FFF
(EEE);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询