用于操纵if循环的Shell脚本

用于操纵if循环的Shell脚本,shell,sed,awk,Shell,Sed,Awk,我正试图修改一个大型代码库中的if循环 代码可能包含如下内容。这只是一个if条件的随机组合示例。我需要单独修改if-else-if条件 if((A==B)&&(C==D)&&((E==F)||(G==H))||(I)&&(J!=K)) 应修改为 if((string.Compare(A,B)==0)&&(string.Compare(C,D)==0)&&((string.Compare(E,F)==0)||(st

我正试图修改一个大型代码库中的if循环

代码可能包含如下内容。这只是一个if条件的随机组合示例。我需要单独修改if-else-if条件

if((A==B)&&(C==D)&&((E==F)||(G==H))||(I)&&(J!=K))
应修改为

 if((string.Compare(A,B)==0)&&(string.Compare(C,D)==0)&&((string.Compare(E,F)==0)||(string.Compare(G,H)==0))||(I)&&(string.Compare(J,K)!=0))

我尝试过Java,但完全失败了。我相信这在sed或awk中是可能的。有什么帮助吗?

基本上,您不需要使用awk或sed来构造if语句。写下来就足够了:

if [ A == B -a C == D -a ( E == F -o G == H ) -o I -a J != K ]; then
    your code here
fi

==运算符比较字符串。如果要比较数字,请使用-eq运算符。请参阅向下滚动到test命令和

基本上不需要使用awk或sed来构造if语句。写下来就足够了:

if [ A == B -a C == D -a ( E == F -o G == H ) -o I -a J != K ]; then
    your code here
fi

==运算符比较字符串。如果要比较数字,请使用-eq运算符。请参阅“向下滚动到测试”命令和

基本上可以使用任何支持正则表达式替换的语言来完成

下面是一个3行工作的C示例:

结果是:

ifstring.CompareA,B==0&&string.CompareC,D==0&&string.CompareE,F==0 | | string.CompareG,H==0 | | I&&string.CompareJ,K=0


基本上可以用任何支持正则表达式替换的语言来实现

下面是一个3行工作的C示例:

结果是:

ifstring.CompareA,B==0&&string.CompareC,D==0&&string.CompareE,F==0 | | string.CompareG,H==0 | | I&&string.CompareJ,K=0

\2周围的空格不是绝对必要的



2周围的空格不是绝对必要的。

我几乎可以肯定他没有在谈论它。他想要的是将一些代码文件语法转换成另一个。事实上,你把我的问题搞错了。这是关于操纵if-loop中的文本,而不是关于if-loop。我几乎可以肯定他不是在谈论它。他想要的是将一些代码文件语法转换成另一个。事实上,你把我的问题搞错了。这是关于操纵if循环中的文本,而不是关于loopANTLR是否适合这个目的:不能使用ANTLR。需要shell、java或c-1吗?问题真的不清楚。如果你想被理解,你应该付出一些努力。不要只是责怪别人。如果我的问题不清楚,我很抱歉。我会投票给你的答案,这样就不会影响你的声誉。ANTLR非常适合这个目的:不能使用ANTLR。需要shell、java或c-1吗?问题真的不清楚。如果你想被理解,你应该付出一些努力。不要只是责怪别人。如果我的问题不清楚,我很抱歉。我会投票给你的答案,这样就不会影响你的声誉。我想这就是我想要的。我会尝试在Java中获得与之相当的答案,因为我对Java不太熟悉c@Harish试着用Java来做。查看Java如何替换正则表达式匹配项,然后翻译代码。正则表达式应该是相同的。我想这就是我想要的。我将尝试在Java中获得它的等价物,因为我不太熟悉它c@Harish试着用Java来做。查看Java如何替换正则表达式匹配项,然后翻译代码。正则表达式应该是相同的。非常有趣:结尾的0/g是什么意思?@Oscar,0只是字符串的零。比较布尔值。/标记sed命令替换文本的结尾。g表示在文本中执行全局搜索和替换。谢谢。g就是我要找的:非常有趣:结尾的0/g是什么意思?@Oscar,0只是字符串的零。比较布尔值。/标记sed命令替换文本的结尾。g表示在文本中执行全局搜索和替换。谢谢。g是我一直在寻找的:
sed -r 's/([[:alpha:]])([=!]=)([[:alpha:]])/string.Compare(\1,\3) \2 0/g'