Grepの最初の発生と他の最初の発生の間

Grepの最初の発生と他の最初の発生の間

これが私の最初の質問です! grepをたくさん試しましたが、まだ欲しいものが見つかりませんでした。

さて、ここにいます。

私のUbuntuコンピュータには、次の内容を含む多くのファイルがあります。

{"group":{"name":"Subdivision01","id":"94827-20934-23085"}*manytext*
{"group":{"name":"Department28","id":"11672-23517-87241"}*manytext*
{"group":{"name":"Division07","id":"86267-91634-22516"}*manytext*

私はただ持って行きたいです。Subdivision01そしてDivision05そしてDepartement14(長さが異なる)

だからこれは意味する〜サイこれ初めて発生":"初めて起こる"," ==>どうすればいいのかわかりません...

あなたの助けをいただきありがとうございます:)

答え1

1つのアプローチは、Perl準拠の正規表現を使用することです。周りを見てください:

$ grep -oP '(?<="name":").+?(?=",)' file
Subdivision01
Department28
Division07

-PPCREサポートを有効にし、行の一致部分のみを印刷するように指示-oします。grep

(?<=foo)barこれはアクティブバックビューbar:直前に来る場合にのみ一致しますfoo。それならbar(?=foo)正数だ。視野bar、直後に来る場合にのみ一致しますfoo。したがって、私たちが使用する正規表現は、.+?aとa()の間で最も短い文字列を見つけることです。"name":"",

関連情報