grep
単一のデータ行で正規表現を使用したいかどうかはわかりません。インターネット検索で、grep
すべての.ext
ファイルと一致し、デフォルト名を返す次の予測式が見つかりました。
XX@XX:/$ echo name.ext | grep -oP [^\.]+(?=.ext)
name
これはうまく機能しますが、ユーザーにファイルを保存するように求められますので、拡張子を付けて名前を入力するかどうかはわかりません。すべての名前が一致することを確認しながら、プレビューを条件付きに設定してみましたが、理解できない結果が返されました。
XX@XX:/$ echo name.ext | grep -oP "[^\.]+(?=.ext)?"
name
ext
拡張子を省略すると動作します。
XX@XX:/$ echo name | grep -oP "[^\.]+(?=.ext)?"
name
もしそうなら、これはgrep問題か正規表現問題ですか?どういうわけかプレビューをキャプチャしないようにする必要がありますか?
ベストアンサー1
POSIXシェル置換を使用して、以下を削除できます.ext
。
file='name.ext'
printf '%s\n' "${file%.ext}"
拡張自由文字列を新しい変数に割り当てるには、次のようにします。
noext="${file%.ext}"