2017-10-26 11 views
1

だから私はこのようなコードがあります。bashを使って複数の行を1行にするにはどうすればいいですか?

else if(between(pay,1260,1280)) 
{ 
    return 159; 
} 
else if(between(pay,1280,1300)) 
{ 
    return 162; 
} 
else if(between(pay,1300,1320)) 
{ 
    return 165; 
} 

をしかし、私は、それは次のようになりたい:

else if(between(pay,1260,1280)){return 159;} 
else if(between(pay,1280,1300)){return 162;} 
else if(between(pay,1300,1320)){return 165;} 

私はbashでこれを行うことができますか?そうでない場合は、どの言語を使用できますか?

完全なコードは30,000行以上あり、手動で行うこともできますが、より良い方法があることはわかっています。私は 'sed'コマンドが正規表現の混合で私を助けることができると言いたいが、それは私の知識が私を連れて行く限りである。

P.Sこれは一度だけ最適化されていないことを見落としてください。

+0

(基本的に一の具体例では、3回繰り返した)、それはおそらく、あなたのコードの他の部分を壊すでしょう。 –

答えて

0

次のawkも同じように役立ちます。

awk -v RS="" '{ 
$1=$1; 
gsub(/ { /,"{"); 
gsub(/ }/,"}"); 
gsub(/}/,"&\n"); 
gsub(/ else/,"else"); 
sub(/\n$/,"") 
} 
1 
' Input_file 

出力は以下の通りです。

else if(between(pay,1260,1280)){return 159;} 
else if(between(pay,1280,1300)){return 162;} 
else if(between(pay,1300,1320)){return 165;} 

EDIT:は今も解決策の説明を追加します。私たちは、あなたが私たちに示してきたもの変換するためのルールのお手伝いをすることができます

awk -v RS="" '{  ##Making RS(record separator) as NULL here. 
$1=$1;    ##re-creating first field to remove new lines or space. 
gsub(/ { /,"{");  ##globally substituting space { with only { here. 
gsub(/ }/,"}");  ##globally substituting space } with only } here. 
gsub(/}/,"&\n");  ##globally substituting } with } and new line here. 
gsub(/ else/,"else");##globally substituting space else with only else here. 
sub(/\n$/,"")  ##substituting new line at last of line with NULL. 
} 
1     ##motioning 1 here as awk works on method of condition and action. 
        ##So here I am making condition as TRUE and then not mentioning any action so be default print of current line will happen. 
' Input_file 
+1

これは最も簡単な実装でした。ありがとうございました!何を意味するのか分かりませんが、私が知っている日を待つことはできません。 – Francisco

+0

@Francisco、今すぐ自分のコードに説明を追加しました。それを通過して、同じ質問があるかどうか教えてください。 – RavinderSingh13

0

これはあなたのために働くかもしれない(GNUのSED):

sed '/^else/{:a;N;/^}/M!ba;s/\n\s*//g}' file 

は、パターン空間で必要な行を集めて、すべての改行を削除し、マーカー、すなわち}始まる行を最後に遭遇した上でスペースを次のよう。

関連する問題