grep有限的字符 - 一行

时间:2012-05-07 18:38:52

标签: linux unix ubuntu debian

我想在多个文件中查找单词,并且每个结果只返回一行,或者返回有限数量的字符(例如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.

3 个答案:

答案 0 :(得分:17)

您可以使用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个字符。

答案 1 :(得分:17)

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

这不会调用Radio-Symphony-Orchestra,但是-i(仅匹配)。

模式前后最多40个字符。注意:* e * grep。

答案 2 :(得分:4)

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

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

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