当前位置: 首页>>技术教程>>正文


linux – grep限制字元-一行

, , ,

问题描述

我想在多个文件中查找一个单词,并且每个结果仅返回一行,或者返回有限数量的字符(例如40到80个字符),而不是默认返回整行。

grep -sR 'wp-content' .

file_1.sql:3309:blog/wp-content 
file_1.sql:3509:blog/wp-content 
file_2.sql:309:blog/wp-content 

目前,我看到以下内容:

grep -sR 'wp-content' .

file_1.sql:3309:blog/wp-content-Progressively predominate impactful systems without resource-leveling best practices. Uniquely maximize virtual channels and inexpensive results. Uniquely procrastinate multifunctional leadership skills without visionary systems. Continually redefine prospective deliverables without.
file_1.sql:3509:blog/wp-content-Progressively predominate impactful systems without resource-leveling best practices. Uniquely maximize virtual channels and inexpensive results. Uniquely procrastinate multifunctional leadership skills without visionary systems. Continually redefine prospective deliverables without. 
file_2.sql:309:blog/wp-content-Progressively predominate impactful systems without resource-leveling best practices. Uniquely maximize virtual channels and inexpensive results. Uniquely procrastinate multifunctional leadership skills without visionary systems. Continually redefine prospective deliverables without.

最佳答案

 egrep -Rso '.{0,40}wp-content.{0,40}' *.sh

这不会调用Radio-Symphonie-Orchestra,而是-o(仅匹配)。

图案前后最多40个字符。注意:* e * grep。

次佳答案

您可以结合使用grep和cut

使用您的示例,我将使用:

grep -sRn 'wp-content' .|cut -c -40
grep -sRn 'wp-content' .|cut -c -80

那将分别为您提供前40个或80个字符。

编辑:

另外,在grep中有一个标志,您可以使用:

-m NUM, --max-count=NUM
          Stop reading a file after NUM matching lines.

这与我之前写的内容结合在一起:

grep -sRnm 1 'wp-content' .|cut -c -40
grep -sRnm 1 'wp-content' .|cut -c -80

这应该使您第一次在每个文件中显示它,并且仅显示前40个或80个字符。

第三种答案

如果将正则表达式更改为'^.*wp-content',则可以使用egrep -o。例如,

egrep -sRo '^.*wp-content' .

-o标志使egrep仅打印出匹配的行部分。因此,从行首匹配到wp-content应该会在第一个代码块中产生示例输出。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/9101.html,未经允许,请勿转载。