目的がファイル名から拡張子を取り除きたいのですが
expr `basename hoge.sh ` : '\(.*\)\.'
で標準出力の結果が hoge となり目的を達成する事ができました。
しかし '\(.*\)\.' の意味がよく理解出来なくて悩んでおります。
色々と試してみた結果になりますが
expr `basename hoge.sh ` : '\(*\)\.' .を取ってみた
出力無し
expr `basename hoge.sh ` : '\(.*\) .\を取ってみた
hoge.sh
expr `basename hoge.sh ` : '\(.*\).' \を取ってみた
hoge.s
expr `basename hoge.sh ` : '\(...\)\.' ...にした
出力無し
expr `basename hoge.sh ` : '\(....\)\.' ....にした
hoge
以上、よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
expr コマンドの 「expr 文字列 : 正規表現」書式で正規表現中で \( \) が使われていた場合は、それに囲まれた範囲が結果として出力されます。
このことは、man expr で調べられます。あとは、 . 任意の文字列、 * 直前の0回以上の繰り返し、 \. ピリオド文字
というのがわかれば、ピリオドの直前までの文字列を取り出すことがわかると思います。
また、拡張子が .sh だということがわかっていれば、
basename hoge.sh .sh
でhogeが得られます。
ご回答有り難うございます。
> * 直前の0回以上の繰り返し
だから expr `basename hoge.sh ` : '\(*\)\.' の時は
直前の文字が無いので( (が有るがこの(はexprとしての特別な書式の為無視される?! )、指定したい文字を表す事が出来ない理由で
出力が無い動作になるのだろうと、何となくですが理解できました。
\( \) 以降の\.ピリオド文字を含めた、
それ以降の文字は不要であると明示している事もわかりました。
No.3
- 回答日時:
ちなみに \( と \) は一般的な正規表現と違います。
あとは、.* と \. が分かれば理解できると思います。
参考URL:http://www.linux.or.jp/JM/html/gnumaniak/man1/ex …
ご回答有り難うございました。
> ちみに \( と \) は一般的な正規表現と違います。
この事を認識していなかったので
理解する上で糸口となりました。
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- C言語・C++・C# プログラミングのペーパーテスト 実行結果を表示せよ #include <stdio.h> int h 1 2022/07/09 15:27
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
- HTML・CSS 全部のアクセスを指定したページに転送させたい 2 2022/06/28 16:33
- JavaScript javascriptで文字分割は、 split() などメソッド不要??? 4 2023/02/06 22:50
- JavaScript JavaScriptで「〇以上▲まで」の書き方 1 2022/07/20 14:44
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- JavaScript ifreamをリロードしたい 1 2022/05/03 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
バッチで特定文字が含まれる先...
-
スラッシュ"/"を削除したい
-
unixのdiffコマンドの動作について
-
killコマンド実行時のメッセー...
-
Linuxで*をつかってファイル移...
-
【DOSコマンド】for文の中で変...
-
コマンド結果のリダイレクト
-
UNIXで、ディレクトリを比較し...
-
renameコマンドでファイル名か...
-
コマンドプロンプトでUSBメモリ...
-
*.txtファイルの最終行だけ参照...
-
フォルダ内のファイル名を取得する
-
コマンドプロンプト net user...
-
【Linux】findコマンドの表示順
-
標準出力とリダイレクトを同時...
-
CentOS/リダイレクションに改行...
-
Dirコマンドでフォルダ内ファイ...
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
バッチで特定文字が含まれる先...
-
*.txtファイルの最終行だけ参照...
-
【DOSコマンド】for文の中で変...
-
【Linux】findコマンドの表示順
-
Linuxで*をつかってファイル移...
-
○行目から□行目だけを表示する...
-
UNIXで、ディレクトリを比較し...
-
renameコマンドでファイル名か...
-
CentOS/リダイレクションに改行...
-
OSXで常に最後に表示される文字...
-
スラッシュ"/"を削除したい
-
標準出力とリダイレクトを同時...
-
ショートカットのリンク先(フ...
-
unixのdiffコマンドの動作について
-
windows7でmingwのgrepで漢字の...
-
euctosj を使用してファイル名...
-
ファイルの先頭に文字を追加す...
-
killコマンド実行時のメッセー...
-
コマンドプロンプト net user...
おすすめ情報