sed ファイルを新しい名前で別のディレクトリにリダイレクトする

sed ファイルを新しい名前で別のディレクトリにリダイレクトする

いくつかのテンプレートを実行するために$template呼び出すファイルがあります。これが完了したら、新しいファイルをシェルスクリプトの一部である別のディレクトリにリダイレクトしたいとsed思います。$templateoutputnewtemplate

        sed -r -i.bak -e "{
            # templating done here.
        }" $template > $data/$newtemplate

$newtemplateこれにより、ディレクトリにファイルが正常に作成されますが、$outputsedを呼び出すかテンプレート作成を実行しません。
簡単に言えば、ファイルをsed使用し$templateてテンプレートファイルをインポートしてoutput新しい名前のディレクトリにリダイレクトする方法は?newtemplate

ベストアンサー1

オプションは出力が生成されないことを-i意味します。sed代わりに元のファイルを変更します。したがって、コマンドは正常に動作し、すべての操作を実行していますが、#templating実行中であり、$template出力がありません。出力がないため、空の> $data/$newtemplateファイルのみが生成されます。

ソース$templateファイルに影響を与えずにコマンド出力をsed標準出力に印刷し、標準出力をwithにリダイレクトするファイルに印刷するには、このオプションを> $data/$newtemplate削除する必要があります。-i

sed -r -e "{
            # templating done here.
        }" "$template" > "$data/$newtemplate"

(あなたもそうしなければなりません。常に変数を引用してください。上記のように)

おすすめ記事