다음과 같은 패턴이 있는지 확인하기 위해 파일을 검색하고 싶습니다
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']
대괄호는 정규식 구문에서 특별한 의미를 갖기 때문에 이스케이프 처리해야 합니다. -E
with 를 사용할 필요는 없으며 grep
with 의 기본 패턴 일치 기능이면 grep
충분합니다.
노트: grep
일치 항목을 색상으로 표시하는 것이 일반적이므로 사용하는 패턴이 실제로 일치하는 패턴이 무엇인지 알 수 있습니다.