ソースコードがありますが、いくつかの特定の行を新しい書式とテキストに置き換えたいと思います。
ファイルには次の行が含まれています。
LogIfYouCan(!is_it_ready, "Log Text, some variable: " << variable1 << " variable2: " << variable2);
入れ替えたいです。
if(!is_it_ready) {
LogOutput("Log Text, some variable: " << variable1 << " variable2: " << variable2);
}
つまり、 で始まる行は行末までテキストLogIfYouCan
に変更され、カンマまでのテキストは中括弧とともに追加されます。LogOutput
どうすればいいですか?そして、?,
(
,
if
sed
awk
答え1
使用sed
$ sed -E 's/[^!]*([^,]*),[^"]*(.*)/if(\1) {\n LogOutput(\2\n}/' input_file
if(!is_it_ready) {
LogOutput("Log Text, some variable: " << variable1 << " variable2: " << variable2);
}
答え2
-E
\n
GNU sedやBSD sedなど、EREと改行の有効化をサポートするsedを使用してください。
$ sed -E 's/^LogIfYouCan\(([^,]+), *(.*)/if(\1) {\n LogOutput(\2\n}/' file
if(!is_it_ready) {
LogOutput("Log Text, some variable: " << variable1 << " variable2: " << variable2);
}