web-dev-qa-db-ja.com

grep限定文字-1行

複数のファイルでWordを検索し、結果ごとに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.
21
Patrick Maciel
 egrep -Rso '.{0,40}wp-content.{0,40}' *.sh

これはRadio-Symphonie-Orchestraを呼び出しませんが、-o(nlyマッチング)を呼び出します。

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

18
user unknown

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

18
aemus

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

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

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

4
Tim Pote