1. ホーム
  2. regex

[解決済み] sed を使って文字列からテキストを抽出するには?

2022-09-28 17:40:41

質問

私の文字列の例は次のとおりです。

This is 02G05 a test string 20-Jul-2012

さて、上記の文字列から 02G05 . そのためにsedで以下の正規表現を試してみました。

$ echo "This is 02G05 a test string 20-Jul-2012" | sed -n '/\d+G\d+/p'

しかし、上記のコマンドは何も表示しません。その理由は、私がsedに供給したパターンに何もマッチしないからだと思います。

そこで、私の質問は、ここで何が間違っているのか、そしてどのようにそれを修正するのかということです。

上記の文字列とパターンをpythonで試したところ、次のような結果が得られました。

>>> re.findall(r'\d+G\d+',st)
['02G05']
>>>

どのように解決するのですか?

パターン \d はサポートされていないかもしれません。 sed . 試す [0-9] または [[:digit:]] の代わりに

マッチした行全体ではなく、実際にマッチした部分のみを表示するには、置換を使用します。

sed -n 's/.*\([0-9][0-9]*G[0-9][0-9]*\).*/\1/p'