我想在通常有很长行的HTML文件上运行ack或grep.我不想看到很长的线条反复包裹.但我确实希望看到围绕与正则表达式匹配的字符串的长行的那一部分.如何使用任何Unix工具组合获得此功能?
我正试图找到一种方法
grep -o "somepattern"
这给了我类似的东西
html/file.js
2:somepattern
5:somepattern
Run Code Online (Sandbox Code Playgroud)
但真正好的是在比赛之前和/或之后有几个角色(可能是20个).
我知道有一种方法可以在(上下文)之前和之后显示行,但有没有办法按字符显示上下文?例如
html/file.js
2:function helloWorld(somepattern) {
5: var foo = somepattern;
Run Code Online (Sandbox Code Playgroud)
我问的原因是,如果我递归地grep并用匹配命中一个缩小的文件,它会打印整个文件,这非常烦人.
说我有这个文本文件(lorem.txt):
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna
aliqua.
Run Code Online (Sandbox Code Playgroud)
如果使用,grep现在可以轻松找到包含eiusmod以下内容的行:
$ grep eiusmod lorem.txt
adipiscing elit, sed do eiusmod tempor
Run Code Online (Sandbox Code Playgroud)
通过使用类似的上下文切换,-C我什至可以得到围绕比赛的内容:
$ grep -C1 eiusmod lorem.txt
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna
Run Code Online (Sandbox Code Playgroud)
很好 但是,如果我只想在同一行上看到一些最接近比赛的字符怎么办?没有完整的行。所以这样的行为:
$ grep --char-context=3 eiusmod lorem.txt
do eiusmod te
$ grep -n --char-context=5 dol lorem.txt
1:psum …Run Code Online (Sandbox Code Playgroud)