使用grep,我可以在我的文档中打印所有出现的大写字母"Z".但是,输出将显示文档中每个"Z"的整行.我需要将此限制为仅打印每次出现"Z"之前出现的10个字母.
例如,如果文档有一行"AAAABBBBBBBBBCCCCCCDDDDDDDZ",它将打印"CCDDDDDDD",之前出现的10个字母.
结果将是这些字母的输出列表,例如:
ABBBBBBBBB
CCDDDDDDDZ
Run Code Online (Sandbox Code Playgroud)
如何在文档中每次出现字母"Z"之前打印10个字母?
简单:
grep -oP '.{10}(?=Z)' <<< AAAABBBBBBBBBZCCCCCDDDDDDDZ
Run Code Online (Sandbox Code Playgroud)
说明:
-o : Print only match, not entire line
-P : Use PCRE / Perl regex
.{10} : Match is any 10 characters,
(?=z) : which are followed by "Z". (Search for positive look-ahead for more details)
<<< ...: Here string
Run Code Online (Sandbox Code Playgroud)
编辑:
注意:如果我们想要的10个字符重叠,则不起作用.例如input = AAAABBBBBBBBBZDDDDDDZ.如果输入包含这样的模式,请参阅igegami的答案
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |