grepから行番号を取得する方法は?


18

次のgrep

grep -r -e -n coll *

表示されます

fullpath/filename:  <tag-name>coll</tag-name>

次のテキストがある行を知りたいのですが、を追加しようとしました-nが、うまくいきませんでした。を追加しようとしましたが | grep -n *、奇妙なことが起こりました。

見たいのは(フォーマットは気にしない)

fullpath/filename:10:  <tag-name>coll</tag-name>

1
-nオプションを使用すると行番号が表示されます。取得したものの出力を投稿できますか?
クリスハーパー

回答:


18

-eオプションリストの最後に配置する必要があります。grep -rne coll *


15

-r&-eは不要です!

パターンの行番号を取得します!

grep -n "pattern" file.txt

出力として行番号のみを取得する場合は、別のgrepコマンドを追加します!

grep -n "pattern" file.txt | grep -Eo '^[^:]+'

1
行番号だけを取得するにはcut、を使用する方が簡単です。たとえばcut -f1 -d:
-wjandrea

1

特定のファイルのパターンをgrepし、一致する行を取得するには:

grep -n <Pattern> <File> | awk -F: '{ print $1 }' | sort -u

またはcut、@ wjandreaの提案に従って使用します。

grep -n <Pattern> <File> | cut -f1 -d: | sort -u

どこ

  • <Pattern>引用されたglobパターン(-E正規表現のオプションを使用);
  • <File> 興味のあるファイルです。
  • 最初のパイプawk ...は、grepの出力(:各行の前)で行番号をフィルター処理します。
  • 2番目のパイプは、行番号が1回だけ表示されるようにします。

行番号だけを取得するには、cutcut -f1 -d:
Awk

@wjandreaどのように簡単ですか?
シェルジョン

私は構文がシンプルであることを意味する
-wjandrea

@wjandreaそれは非​​常に客観的に聞こえます。
シェルジョン

@wjandreaごめんなさい、私はあなたの提案を含めるように編集しました:)
Sheljohn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.