22

複数のファイルで単語を検索し、結果ごとに1行だけを返すか、デフォルトのように行全体ではなく、限られた数の文字(たとえば、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.
4

3 に答える 3

21

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文字のみが表示されます。

于 2012-05-07T19:21:39.113 に答える
18
 egrep -Rso '.{0,40}wp-content.{0,40}' *.sh

これはRadio-Symphonie-Orchestraを呼び出しませんが、-o(完全に一致)を呼び出します。

パターンの前後に最大40文字。注:* e *grep。

于 2012-05-07T21:43:48.933 に答える
4

正規表現をに変更すると、'^.*wp-content'を使用できますegrep -o。例えば、

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

-oフラグmakeegrepは、一致する行の部分のみを出力します。したがって、行の先頭からに一致するとwp-content、最初のコードブロックにサンプル出力が生成されます。

于 2012-05-07T18:41:14.690 に答える