ファイルの文字列を再配置/再構成するためのsedスクリプトを作成するにはどうすればよいですか?
私のファイルの内容は次のとおりです。
for(int i=0; i<old(a, 10); i++)
{
sum += old(c*c, i*a)
}
変更されたコンテンツを次のように作成したいと思います。
for(int i=0; i<new(10,0,a); i++)
{
sum += new(i*a, c*c)
}
答え1
以下はGNUに適用されます。単語境界表示をsed
使用して、単語の一部として含まれているのではなく、「単語」自体の場合にのみ変更するようにします。\<
\>
old
new
cold
$ sed -e 's/\<old\>/new/g' foo.c
for(int i=0; i<new(a, 10); i++)
{
sum += new(c*c, i*a)
}
-i
標準出力に印刷する代わりにファイルを変更するには、GNU sedのオプションを使用します。
警告する:このsed
スクリプトは変更されます。みんな/\<old\>/
ソースファイルで発生します。これは変更しようとするよりもはるかに多い可能性があります。
答え2
GNU sed:
/bin/sed -ire \
's!\<old\(([^)]+), *([^) ][^)]*)\)!new(\2, \1)!g' \
*.c </dev/null