sedを使用してコマンドを行の結果に置き換える(コマンド出力)

sedを使用してコマンドを行の結果に置き換える(コマンド出力)

sedを使用して特定の正規表現抽出コマンドをその出力に置き換えることはできますか?

たとえば、次のファイルがあります。

2 + 2 = $$shell:echo 2 + 2 | bc$$ // and "some unescaped text' here

どのように変換しますか?

2 + 2 = 4 // and "some unescaped text' here

コマンドを抽出して評価できることがわかりました。

echo '2 + 2 = $$shell:echo 2 + 2 | bc$$ // and "some unescaped text' here | sed -e 's/.*\$\$shell:\(.*\)\$\$.*/\1/e'
4

しかし、残りの行を維持する方法を理解していません。

ベストアンサー1

パールを使用できます...

perl -pe 's[\$\$shell:(.*?)\$\$][ qx($1) =~ s/\n$//r ]ge' < inputfile

qx末尾の改行を削除しないため、後続の改行が削除されることを除いて、コマンドの置換=~ s/\n$//rと同じです。周囲の内容は、s[][]gePerl式を置換で使用する一般的な置換のみです。)

おすすめ記事