grep 명령을 사용하여 두 번째 열에서 검색을 시작하는 방법

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
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

가능한 한 제가 직접 명령을 내릴 수 있도록 도와주세요. 나는 새로운 명령과 검색 방법을 선호하지 않습니다. 두 번째 열부터 검색하면 됩니다.

답변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긍정적인 LookBehind와 함께 옵션(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

관련 정보