使用 --only-matching 在 OS X 上进行 Grep 行为
Grep behavior on OS X with --only-matching
当我运行以下内容时:
printf "1234\n1234" | grep -o '^.'
我在 OSX 10.10 上使用 zsh 5.0.5 得到以下输出:
1
2
3
4
1
2
3
4
为什么?我希望这个输出:
1
1
谁能重现这个问题?我在 Ubuntu 14.04.
上得到了预期的输出
我不能告诉你哪里出了问题,但请尝试解决方法:
printf "1234\n1234" | awk -vFS= '{print }'
1
1
通过将 FS
设置为空,每个字符都变成单独的字段,然后打印第一个字段 </code></p>
<p>如果<code>-FS=
不行试试-vFS=""
问题似乎是 Apple 已选择在其最新操作系统上使用超过十年的 grep
版本。它有错误 including the one you point out. The only thing I can seriously suggest is that you use a package manager like homebrew 可以升级您用于日常工作的 grep。
$ grep --version
grep (BSD grep) 2.5.1-FreeBSD
$ grep --color=never -o ^. <<< ab
a
b
$ brew install grep
==> Installing grep from homebrew/homebrew-dupes
<SNIP>
$ ggrep --version
ggrep (GNU grep) 2.21
$ ggrep --color=never -o ^. <<< ab
a
当我运行以下内容时:
printf "1234\n1234" | grep -o '^.'
我在 OSX 10.10 上使用 zsh 5.0.5 得到以下输出:
1
2
3
4
1
2
3
4
为什么?我希望这个输出:
1
1
谁能重现这个问题?我在 Ubuntu 14.04.
上得到了预期的输出我不能告诉你哪里出了问题,但请尝试解决方法:
printf "1234\n1234" | awk -vFS= '{print }'
1
1
通过将 FS
设置为空,每个字符都变成单独的字段,然后打印第一个字段 </code></p>
<p>如果<code>-FS=
不行试试-vFS=""
问题似乎是 Apple 已选择在其最新操作系统上使用超过十年的 grep
版本。它有错误 including the one you point out. The only thing I can seriously suggest is that you use a package manager like homebrew 可以升级您用于日常工作的 grep。
$ grep --version
grep (BSD grep) 2.5.1-FreeBSD
$ grep --color=never -o ^. <<< ab
a
b
$ brew install grep
==> Installing grep from homebrew/homebrew-dupes
<SNIP>
$ ggrep --version
ggrep (GNU grep) 2.21
$ ggrep --color=never -o ^. <<< ab
a