x개 이하의 숫자가 포함된 행만 유지하세요. TXT 파일

x개 이하의 숫자가 포함된 행만 유지하세요. TXT 파일

비슷한 질문을 찾았습니다.

그런데 이 경우 내가 확인하고 싶은 것은 전체 길이가 아니라 줄의 자릿수이다. 예를 들어 다음 입력에서:

cdc85e24-b9e9-8802-080a-b84479e1ae82  
ekodeveloper0  
1795475824.1129747.1472396049615.ref  
1795475824.1129747.1472396049615  
967175540.1194446.1472407271491  
wangxiuyan552  
jveazey  
xoloki  
whelee  
matthauck  
patel3.anirudh  
mischa.salle  

N 자리보다 많은 행을 모두 삭제하는 방법은 무엇입니까?

답변1

질문에 태그를 붙였으므로 Perl에서 이를 수행하는 한 가지 방법은 Perl이 대체된 문자 수를 반환한다는 사실을 perl활용하는 것입니다 . 예를 들어 (taken ) 이렇게 할 수 있습니다.trN = 13

perl -ne 'print unless tr/[0-9]/[0-9]/ > 13' file
ekodeveloper0
wangxiuyan552
jveazey
xoloki
whelee
matthauck
patel3.anirudh
mischa.salle

아마도 더 전통적인 접근 방식은 스칼라 컨텍스트에서 정규식 일치를 평가하여 개수를 얻는 것입니다.

perl -ne '$c = () = /\d/g; print unless $c > 13' file

예시 보기문자열에서 일치하는 항목의 수를 계산하기 위한 Perl의 지름길이 있습니까?

답변2

X 또는숫자. 다음은 X가 13인 예입니다.

sed -n 's/[0-9]/&/13p' input.txt > output.txt

그러나 반대로 수정하여 수행할 수 있습니다. 다음 내용이 포함된 줄만 유지하는 명령은 다음과 같습니다.13 미만숫자:

sed -n -e 's/[0-9]/&/13;t' -e 'p' input.txt > output.txt

설명 - 13개 이상의 숫자가 포함된 줄만 인쇄합니다.

sed -n 's/[0-9]/&/13p' input.txt > output.txt

대체 텍스트의 기호는 &"일치하는 모든 콘텐츠"를 의미합니다.

명령의 숫자 플래그 s(해당 /find/replace/부분 뒤)는 검색 패턴의 해당 인스턴스만 바꾸는 것을 의미합니다.

p명령의 플래그는 s"대체가 이루어진 경우 인쇄"를 의미합니다.

-n물론 이 스위치는 Sed의 기본 "인쇄" 작업을 억제하기 위한 것입니다.

설명 - 숫자가 13보다 작은 줄만 인쇄합니다.

sed -n -e 's/[0-9]/&/13;t' -e 'p' input.txt > output.txt

스위치 -e는 "실행"입니다. 단지 명령을 전달하는 것뿐입니다. 우리는 둘 이상의 문제를 겪고 있기 때문에 여기에 필요합니다.

마지막 명령이 대체를 수행한 경우 이 t명령은 나머지 명령을 건너뜁니다.s

명령 p인쇄.

관련 정보