我有一个有几行很长的文件。我想 grep 一个可能在文件中出现多次的字符串,包括可能不止一次出现在一行中。
$ cat 2014-11-03.json | grep 218
Run Code Online (Sandbox Code Playgroud)
这会产生不可读的输出。太多了。
$ cat 2014-11-03.json | grep -o 218
Run Code Online (Sandbox Code Playgroud)
这削减太多了。它只显示匹配的模式,没有任何上下文。
基本上,我想要像这样的输出
... <category_id>218</category_id> ...
Run Code Online (Sandbox Code Playgroud)
(是的,这是 XML,但我不想解析 XML。我只想输出匹配的字符串,两边各有几个字符。只有几个字符,而不是整行。)
Grep 似乎有选项可以只显示匹配的字符串,或者在其整行上下文中显示匹配的字符串(默认行为),或者在前后几行的上下文中显示匹配的字符串,但我找不到选项在前后几个字符的上下文中显示匹配的字符串。
$ cat 2014-11-03.json | tr ' ' '\n' | grep 218
Run Code Online (Sandbox Code Playgroud)
这并不理想:只要有问题的文件在大致正确的位置有空格,它就可以工作。这次它对我有用,但不能保证它会再次出现。