특정 수 이상의 특수 문자가 포함된 줄을 찾는 방법

특정 수 이상의 특수 문자가 포함된 줄을 찾는 방법

특정 수 이상의 특수 문자가 있는 텍스트에서 줄을 잡는 가장 좋은 방법이 무엇인지 궁금합니다.

각 줄에 4개의 쉼표가 있다는 것을 이미 알고 있고 ,4개 이상의 쉼표가 포함된 줄을 찾고 싶다고 가정해 보겠습니다.,

hi,hello,how,are,you
catch,me,then,say,hello,then

산출

catch,me,then,say,hello,then

답변1

펄 솔루션:

perl -ne 'print if tr/,// > 4'
  • -n파일을 한 줄씩 읽기
  • 이것tr 연산자일치하는 수를 반환합니다.

4줄 미만으로 인쇄하려면 >로 변경하면 됩니다 <.

답변2

사용 grep명령:

grep -E '(,.*){5}' myfile

작업을 수행합니다. 설명하다:

-E:확장 정규식을 사용하세요...

'(,.*): ... 쉼표 뒤에 임의 개수의 문자(0이라도 포함)가 오는 것을 찾습니다...

{5}':...그리고 이전 패턴을 5번 반복합니다.

쉼표가 4개 미만인 줄을 찾으려면 다음이 필요합니다.

grep -xE '([^,]*,){0,3}[^,]*' myfile

이번에는 -x전체 라인과 일치하도록 패턴을 라인의 시작과 끝 부분에 고정해야 합니다. [^,]*대신 사용합니다 . .*그렇지 않으면 후자가 ,s를 포함하는 문자열을 .일치 항목 으로 행복하게 일치시킵니다.어느특징.

-v또 다른 접근 방식은 이전 접근 방식과 반대입니다. "4 미만" 대아니요"적어도 4개"이므로 다음과 같습니다.

grep -vE '(,.*){4}' myfile

답변3

버전 awk:

awk -F, 'NF > 5' myfile

답변4

다음 줄을 통해 얻은 결과


l=`awk 'BEGIN{print }{print gsub(",","")}' example.txt |sed '/^$/d' |awk '$1 > 4 {print NR}'`;sed -n ''$l'p' example.txt  

output
catch,me,then,say,hello,then

관련 정보