スクリプトで sed の代わりに awk を使用できますか? 次の sed スクリプト:
s/orig/replace/g
s/\(foo\)bar/\1dog/
次の GNU awk スクリプトに 1 行ずつ変換できます。
{
$0=gensub(/orig/,"replace","g")
$0=gensub(/(foo)bar/,"\\1dog","")
}
{ print }
そして、# で始まる行を処理したくない場合は、アクション ブロックに入る前にその条件をテストする awk スクリプトを微調整します。
!/^#/ {
$0=gensub(/orig/,"replace","g")
$0=gensub(/(foo)bar/,"\\1dog","")
}
{ print }
sed スクリプトからの最初のいくつかの変換を次に示します。これを実行したい場合に使用できます。
# s=^"=`` =g
$0 = gensub(/^"/,"``","g")
# s=\([ ([{<]\)"=\1 `` =g
$0 = gensub(/([ ([{<])"/"\\1 ``","g")
# s=\.\.\.= ... =g
$0 = gensub(/\.\.\./," ... ","g")
# s=[,;:@#$%&]= & =g
$0 = gensub(/[,;:@#$%&]/," & ","g")
# s=\([^.]\)\([.]\)\([])}>"']*\)[ ]*$=\1 \2\3 =g
$0 = gensub(/([^.])([.])([])}>"']*)[ ]*$/,"\\1 \\2\\3","g")
主に\(
、sed を(
awk に、\1
sedを awk に変更するだけ\\1
です。