grep コマンドを使用して 2 番目の列から検索を開始する方法

grep コマンドを使用して 2 番目の列から検索を開始する方法

次のような文字列を含むファイルがあります:

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3
siteLevel1.2,Levelv2
Level1.2,Levelv2

grep単語を検索するために使用したいと思います。次のコマンドを使用しました:

grep -w "Level1.2" file1.txt > result.txt 

出力は次のようになります。

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3
Level1.2,Levelv2

しかし、最初の列を無視するには grep が必要です。出力には次のものが必要です。

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3

できるだけ、自分のコマンドで助けてください。新しいコマンドや検索方法は好みません。2 列目から検​​索を開始するだけで十分です。

答え1

これは、私の答え関連する質問へ:

grep '^[^,]*,.*Level1\.2' myfile.txt

あるいはもっと簡単に言えば:

grep ',Level1\.2' myfile.txt

一致文字列の先頭のコンマにより、最初のフィールドの何も一致しないことが保証されます。

Level1.20またはの可能性がありLevel1.2a、これらのケースを除外したい場合は、単語区切り文字を追加する必要があります。

grep ',Level1\.2\b' myfile.txt

これらのいずれの場合もegrep(またはgrep -E) は必要ないことに注意してください。

答え2

-P肯定後読みオプション (PCRE) を使用します。

grep -Pw "(?<=,)Level1\.2" file.txt

出力:

site1.com,Level1.2
site2.com,Level1.1,Level1.0,Level1.2
site3.com,Level1.2
site4.com,Level1.2,Level1.1,Level1.0,Levelv3

関連情報