置換の検索と文字列拡張子の追加

置換の検索と文字列拡張子の追加

sedこんにちは。次の作業に使用したいと思います。

私は呼び出されたシェル変数を持ちtor=hello:there/you/are/here、このシェル変数を次のように下線付きのファイル名に変換するために必要な場所に下線を追加しました。

sed -e 's/[^A-Za-z0-9._-]/_/g' <<< $tor

結果は次のとおりです。

hello_there_you_are_here

しかし、次のような拡張を追加したいと思います。

hello_there_you_are_here.sif

行末にsed拡張子を追加するには?

答え1

ユーザーfpmurphyがコメントで指摘したように、Sedに「行末を一致させ、そこに入力」という「コード行」を追加するだけです.sif。 「コード行」が追加され-eたので

sed -e 's/[^[:alnum:].-]/_/g' -e 's/$/.sif/' <<< "$tor"

一部修正しましたので参考にしてください。常に変数拡張を引用し、"$tor"代わりに$torを使用してください。良い練習現時点では実際には必要ありませんが、Bashはここで文字列に対してトークン化やワイルドカードを実行しないためです。また、[:alnum:]標準ロケールと一致するPOSIXクラスなので、[A-Za-z0-9]より安定しています。例えばなぜ「文字クラス」が「文字範囲」よりも優先されるのですか?しかし、これを小さな注意事項として残してください。

関連情報