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