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


0

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

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列目から検​​索する必要があるだけで満足しています。

回答:


0

これは、関連する質問に対する私の答えを簡単に修正したものです。

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

またはさらに簡単に:

grep ',Level1\.2' myfile.txt

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

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

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

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


0

-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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.