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]
より安定しています。例えばなぜ「文字クラス」が「文字範囲」よりも優先されるのですか?しかし、これを小さな注意事項として残してください。