質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Q&A

解決済

2回答

1795閲覧

sedの正規表現で+がイメージと違う動作をします。

020n

総合スコア36

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

0グッド

0クリップ

投稿2017/12/08 17:20

bashにて以下コマンドを実行しました。

$ echo 'a,aa a' | sed -e 's/a,.+/b/g' a,aa a $ echo 'a,aa a' | sed -e 's/a,.*/b/g' b

どちらも「b」とのみ出力されるかと思ったのですが、
1つめは違うように出力されています。

*は直前の文字が0文字以上
+は直前の文字が1文字以上で、
.は任意の文字という認識です。

であれば、*がマッチしている部分は1文字以上であるので、
どちらも出力結果が「b」になると思いました。が、違います。

なぜ+と*で出力結果が異なるのでしょうか。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

投稿2017/12/08 17:25

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

020n

2017/12/08 17:44

まさか+が使えないとは思いませんでした。。。 ありがとうございます!
guest

0

bash

1$ echo 'a,aa a' | sed -e 's/a,.+/b/g' 2a,aa a 3$ echo 'a,aa a' | sed -E -e 's/a,.+/b/g' 4b

man sedによれば

text

1... 2 -E, -r, --regexp-extended 3 4 use extended regular expressions in the script (for portability 5 use POSIX -E). 6...

とあり最初の結果から、sedでは正規表現の+はextended regular expressionsでないと使えないということが伺えます。この他にも-Eでは()、-Eなしだと()と書かなければならないなど色々違いがあります。

正規表現というのは言語やLinuxのコマンドごとに使える文法が微妙に違い、またオプションによっても違うことがあるようです。自分も最近まで-Eの存在に気づいてませんでした・・・

Linuxコマンドの正規表現の違いについては下記のページなどが参考になるかも知れません。(ただしgrepの-Eの記述はあるもののsedの-Eについては記載されてません)

http://www.kt.rim.or.jp/~kbk/regex/regex.html

投稿2017/12/08 17:48

KSwordOfHaste

総合スコア18400

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問