疑問メモ: sedのマッチ
社長以下同僚の皆さんが息を吸うようにsedを使っていてカッコいいので自分も覚えようと思って
これを上からやってたんだけど、Using & as the matched stringでさっそく意味がわからない。
なお、リンク先では置き換え文字に「&」を使っているけど、特定の文字にした方が分かりやすそうなので、ここでは「x」に置き換えることにする。
$ echo "123 abc" | sed 's/[0-9]/x/' x23 abc
わかる。
$ echo "123 abc" | sed 's/[0-9]*/x/' x abc
わかる。
$ echo "abc 123" | sed 's/[0-9]/x/' abc x23
うんうん。
echo "abc 123" | sed 's/[0-9]*/x/' xabc 123
ファッ!?
$ echo "abc 123" | sed 's/[0-9][0-9]*/x/' abc x
お、おぅ。
$ echo "abc 123" | sed 's/ [0-9]*/ x/' abc x
これはわかる。「スペース123」とマッチしている。
結局「The first match for '[0-9]*' is the first character on the line, as this matches zero or more numbers. So if the input was "abc 123" the output would be unchanged (well, except for a space before the letters)」がよくわかってないなー。先に進もう。