teratail header banner
teratail header banner
質問するログイン新規登録

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

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

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

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

3回答

826閲覧

Linuxコマンドでグループを利用して文字列を抽出したい

daiki002

総合スコア68

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2022/03/23 15:46

0

0

実現したいこと

1.jpgを出力として得たいです
カッコ()を利用してグルーピングしたつもりでしたが対象だけが抽出できません

発生している問題

1.jpgでは無くsrc="1.jpg"が得られています

bash

1$ echo '<img src="1.jpg">' | grep -o -E 'src="(.*?)"' 2src="1.jpg"

補足情報(FW/ツールのバージョンなど)

  • Ubuntu 20.04

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

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

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

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

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

guest

回答3

0

-oは括弧内を抜き出すのじゃなく、マッチした文字列を抜き出します。
src="(.*?)"の全体がマッチした物なので、src=" "も含めて抜き出されます。
grep単体でやりたければ、Perl拡張(-P)の先読み・後読みを使って、「マッチした物」から除外する必要があります。(?<=src=").*?(?=")src="\K.*?(?=")

投稿2022/03/23 16:20

otn

総合スコア86349

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

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

daiki002

2022/03/24 06:23

ありがとうございます!
guest

0

ベストアンサー

bash

1$ grep --version 2grep (GNU grep) 3.7 3 4$ echo '<img src="1.jpg">' | grep -o -P 'src="\K.*?(?=")' 51.jpg

投稿2022/03/23 16:03

melian

総合スコア21263

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

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

daiki002

2022/03/24 06:23

ありがとうございます!
guest

0

perlを使いましょう。直感的に処理できます。

echo '<img src="1.jpg">' | perl -lne '/src="(.*?)"/ and print $1'

投稿2022/03/23 22:52

KojiDoi

総合スコア13727

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問