grep 검색 패턴을 사용하는 방법은 무엇입니까?

grep 검색 패턴을 사용하는 방법은 무엇입니까?

다음과 같은 패턴이 있는지 확인하기 위해 파일을 검색하고 싶습니다 text1,text2,[1.2.3,3.4.5,6.7.8,etc]. 대괄호 안의 쉼표 개수는 정의되지 않습니다.

다음 명령을 시도했지만 그 뒤에 쉼표가 인쇄되었는데 text1이는 text2내가 원하는 것이 아닙니다. 저는 대괄호 안의 쉼표를 찾고 있습니다.

$ grep -E '[*,*]' myfile.txt

편집 #1

다음은 몇 가지 샘플 입력입니다. 괄호 안의 쉼표는 예제의 숫자보다 크거나 작을 수 있습니다(즉, 정의되지 않은 숫자이므로 정규식을 사용하여 캡처해야 했습니다).

1.com,1.2.3.4,txt1,txt11,['1.2.3.4', '5.6.7.8']
2.com,3.4.5.6,txt2,txt21,['5.6.6.6']
3.com,5.5.5.5,txt3,txt31,['1.1.1.1', '2.2.2.2', '3.3.3.3']

답변1

대괄호 안에 하나 이상의 쉼표가 포함된 행을 일치시키려면 다음을 사용할 수 있습니다.

grep '\[.*,.*\]'

전임자.

$ grep '\[.*,.*\]' file
1.com,1.2.3.4,txt1,txt11,['1.2.3.4', '5.6.7.8']
3.com,5.5.5.5,txt3,txt31,['1.1.1.1', '2.2.2.2', '3.3.3.3']

대괄호는 정규식 구문에서 특별한 의미를 갖기 때문에 이스케이프 처리해야 합니다. -Ewith 를 사용할 필요는 없으며 grepwith 의 기본 패턴 일치 기능이면 grep충분합니다.

노트: grep일치 항목을 색상으로 표시하는 것이 일반적이므로 사용하는 패턴이 실제로 일치하는 패턴이 무엇인지 알 수 있습니다.

   SS1

관련 정보