• ベストアンサー

正規表現で悩んでいます。

正規表現で悩んでいます。 Linuxを触っているのですが、例えば3番目の=と4番目の=の間の文字を取得するには どうしたらいいのでしょうか? 悩んでてらちがいかないので質問させていただきました。 $ echo "ewfja=iojoi=erewo=rjabc=123" | sed -e ""

質問者が選んだベストアンサー

  • ベストアンサー
  • vaguechat
  • ベストアンサー率85% (47/55)
回答No.2

正規表現は使わないが、 同じ文字の間の文字列を取得するという目的ならば、 echo "ewfja=iojoi=erewo=rjabc=123" | cut -d = -f 4 のようにcutでデリミタとフィールド番号を指定するのではだめ?

hurikake
質問者

お礼

ありがとうございます。 正規表現を使うよりわかりやすかったので、 今回はこの方法を使います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.3

awkコマンドで良いのでは?

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

s/^\([^=]*=\)\{3\}\([^=]*\)=.*/\2/ かなぁ....

参考URL:
http://www.kt.rim.or.jp/~kbk/regex/regex.html#SED
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • sedの正規表現について

    下記のsedコマンド正規表現の意味がわかりません どのような動きをしているのか教えて下さいm(__)m $ file_name="linux.txt" $ echo $file_name | sed -e "s/.*\.\([^.]*\)\$/\1/g" txt

  • 正規表現の初心者です

    正規表現初心者です。 なぜ、 [0-9]+ という正規表現が下記の112にあたらないのでしょうか? 0-9(数字)の一文字以上の繰り返しなので、複数桁の数字にマッチすると思ったのですが・・。 echo 112|grep -e "[0-9]+" > (マッチせず)

  • 正規表現の 「 * 」

    正規表現の 「 * 」は、直前パターンの繰り返しですよね? つまり、a* は a, aa, aaa, aaaa, aaaaa, ..... にマッチするわけですよね? ところで、 echo abbbaaa | sed 's/a*/x/g' のようにしたら a, aaa の部分が x に置き換わって  → xbbbx となることを期待していたのですが、  → xbxbxbx となってしまいました。 なぜでしょうか?

  • 正規表現:  (111)-(222)-(333)

    正規表現:  (111)-(222)-(333) から (333)を取得したいと考えています。 ()で囲まれた数字のうち、最後のものを取得するというもので、 この、最後のという考えを実装することができずに困っています。 なぜ最後にこだわるかというと、以下のような例があるからです。 ◆ (111)english(222) ◆ (111)日本語(222)日本語 文字列中に含まれる()で囲まれた数字のうち、最後のものを取得する正規表現を教えてください。

  • 正規表現を教えてください。

    正規表現を教えてください。 C#で正規表現を用いた文字列検索を勉強中なのですが、うまくマッチさせることができません。教えていただけないでしょうか。 検索対象の文字列は下のようになります。 キーワード;値; 文字列中に該当するキーワードが存在する場合に、その値を取得するプログラムを考えています。しかし、私の正規表現では2つ目の「;」を検出してしまい、キーワードのみを取得することが出来ずに困っています。 見当違いの表記をしているとは思うのですがどなたかお助けください。 match = Regex.Match(line, "^(.*);"); C#初心者なものです。

  • Linuxの正規表現について

    Linuxの正規表現について教えてください。 正規表現を使うと、文字列のパターンを表す事ができる。例えば、行頭が「#」で始まる行は____、aもしくはfで始まる三文字の文字列は____となる という問題なんですけど____の部分をだれか教えてください。明日テストなんだけどわからくて… お願いします。

  • 正規表現の読み方

    /{(.+?)}/e この正規表現はどのような意味でしょうか? 下記のようなプログラム(テンプレートエンジン)に使われています display('index.html', $prm); function display($tpl, $prm) { $html = file_get_contents($tpl); $html = preg_replace('/{(.+?)}/e', '$prm[\'$1\']', $html); echo $html; }

    • ベストアンサー
    • PHP
  • sedの正規表現でグループ化する場合について

    1 echo "00012345" | sed -e "s/[0]*\(1234\)/\1/" と入れた時、想定したのは1234なのですが、 実際には12345と出力されます。 2 echo "00012345" | sed -e "s/[0]*\(1234\)5/\1/" と打つと1234になります。 グループ化してるので、1234だけが抽出されると思ったのですが、 なぜ1の時は5まで出力されるのでしょうか ちなみにgrepを使って検索すると echo "00012345" | egrep -o "(1234)" 1234と出て、グループ化でマッチングした物しか出ません

  • 2つの正規表現の違いは?

    次の正規表現を使った置換の違いがよく分かりません。 $strString="abcd<!--s_1-->うほほ<!--e_1-->efg"; echo preg_replace("/<!--s_1-->.*<!--e_1-->/","<!--s_1-->なんと<!--e_1-->",$strString); $strString="abcd<!--s_1-->うほほ<!--e_1-->efg"; echo preg_replace("/<!--s_1-->.*?<!--e_1-->/","<!--s_1-->なんと<!--e_1-->",$strString); .*  と .*? なんですが、どういったところで違いがでるのでしょうか?

    • 締切済み
    • PHP
  • sedを使ってHTMLファイルのタグを置き換えたいのですが、正規表現が

    sedを使ってHTMLファイルのタグを置き換えたいのですが、正規表現が上手く使いこなせなくて困っています。 実際のファイルには、<td class="style1" id="sequence1" >と書かれてある部分があり、これを<td>に置き換えたいのです。 それで、試しに sed -e 's/<td*>/<td>/g' ファイル名 と記述しましたが出来ませんでした。 正規表現の書き方が間違っているとは思うのですが、時間がなくお聞きすることにしました。 正しい書き方を教えて頂けますでしょうか。