これが私の最初の質問です! 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
-P
PCREサポートを有効にし、行の一致部分のみを印刷するように指示-o
します。grep
(?<=foo)bar
これはアクティブバックビューbar
:直前に来る場合にのみ一致しますfoo
。それならbar(?=foo)
正数だ。視野bar
、直後に来る場合にのみ一致しますfoo
。したがって、私たちが使用する正規表現は、.+?
aとa()の間で最も短い文字列を見つけることです。"name":"
",