如何grep字符串的一个区域?

Tha*_*tit 4 grep sed text-processing

我有一个包含 4000 多个字符的文件,我想 grep 位置 148 和 1824 之间的字符串。我该怎么做?

ter*_*don 11

你不使用grep。有一种工具专为此类事情而设计:cut. 要获取字符 148 到 1824,请执行以下操作:

cut -c 148-1824 file
Run Code Online (Sandbox Code Playgroud)

-c标志表示选择字符。使用-b,如果你想在工作字节。

如果你坚持使用grep,你将不得不做这样的事情(假设 GNU grep)

grep -Po '^.{147}\K.{1675}' file
Run Code Online (Sandbox Code Playgroud)

这匹配前 147 个字符 ( ^.{147}) 并丢弃它们 ( \K)。然后它匹配接下来的 1675 个字符。该-o标志告诉grep只打印一行的匹配部分,并且该-P标志打开与 perl 兼容的正则表达式,让我们使用\K.