回答編集履歴
3
+correction
answer
CHANGED
@@ -19,4 +19,5 @@
|
|
19
19
|
マッチしたものを全部出力したい場合:
|
20
20
|
|
21
21
|
```
|
22
|
-
echo '{色="赤",名前="りんご",味="おいしい"}{名前="みかん",色="橙",味="おいしい"}{味="まずい",色="茶色",名前="りんご"}' | perl -CSD -Mutf8 -nle 'print foreach /名前="(.*?)"/g'
|
22
|
+
echo '{色="赤",名前="りんご",味="おいしい"}{名前="みかん",色="橙",味="おいしい"}{味="まずい",色="茶色",名前="りんご"}' | perl -CSD -Mutf8 -nle 'print foreach /名前="(.*?)"/g'
|
23
|
+
```
|
2
追記
answer
CHANGED
@@ -7,4 +7,16 @@
|
|
7
7
|
|
8
8
|
```
|
9
9
|
echo '{色="赤",名前="りんご",味="おいしい"}{名前="みかん",色="橙",味="おいしい"}{味="まずい",色="茶色",名前="りんご"}' | grep -P -o '(?<=名前=\")[^\"]*(?=")'
|
10
|
-
```
|
10
|
+
```
|
11
|
+
|
12
|
+
この方法だとマッチした部分が複数あった場合全部の部分文字列を1行1文字列で出力するので、先頭以外要らないのであれば、sedかheadでフィルタリングすれば良いでしょう。
|
13
|
+
|
14
|
+
これ以上の凝った処理に発展する可能性があるなら、最初からperlで処理するのが賢いでしょう。
|
15
|
+
|
16
|
+
```
|
17
|
+
echo '{色="赤",名前="りんご",味="おいしい"}{名前="みかん",色="橙",味="おいしい"}{味="まずい",色="茶色",名前="りんご"}' | perl -CSD -Mutf8 -nle '/名前="(.*?)"/ and print $1'
|
18
|
+
```
|
19
|
+
マッチしたものを全部出力したい場合:
|
20
|
+
|
21
|
+
```
|
22
|
+
echo '{色="赤",名前="りんご",味="おいしい"}{名前="みかん",色="橙",味="おいしい"}{味="まずい",色="茶色",名前="りんご"}' | perl -CSD -Mutf8 -nle 'print foreach /名前="(.*?)"/g'
|
1
ミス修正
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
GNU grepではないgrepで、
|
2
2
|
|
3
3
|
* 指定した正規表現にマッチした部分だけを出力するオプション`o`
|
4
|
-
* 先読み言明・あと
|
4
|
+
* 先読み言明・あと読み言明を含むperl拡張正規表現を理解するようにするオプション`P`
|
5
5
|
|
6
6
|
を併用すれば良さそうです。
|
7
7
|
|