참고 : 이 질문은이 Q & A를 보완 합니다. 주어진 범위에서 * 길이 *가 아닌 줄 길이에 대해 “그립”하는 방법은 무엇입니까?
길이가 최소 3 자 이상이지만 10 자 이하인 텍스트 파일 (개행 문자로 분리 된 단어 목록)에서 줄만 가져와야합니다.
예:
입력:
egyezményét
megkíván
ki
alma
kevesen
meghatározó
산출:
megkíván
alma
kevesen
질문 :이 작업을 어떻게 수행 할 수 bash
있습니까?
답변
grep -x '.\{3,10\}'
어디에
-x
전체 라인에 패턴 일치.
어떤 상징{3,10}
이전 심볼의 3 ~ 10 배에서 정량화 (어떤 경우 든)
답변
egrep 사용
egrep '^.{3,10}$'
3 자 이상 10 자 이하인 줄의 시작에서 끝까지 일치합니다.
답변
사용 sed
:
sed '/^.\{3,10\}$/!d'
또는:
sed -r '/^.{3,10}$/!d'
답변
사용 awk
:
awk 'length >= 3 && length <= 10' file
length
문의 길이 반환 $0
기본적으로 (현재 레코드 / 라인) 및 라인의 길이가 지정된 범위 내에 거세한 숫양이 테스트 코드에 의해 사용된다. 이와 같은 테스트에 해당하는 조치 블록이없는 경우 기본 조치는 레코드를 인쇄하는 것입니다.
주어진 데이터에 대한 테스트 :
$ awk 'length >= 3 && length <= 10' file
megkíván
alma
kevesen
Perl과 마찬가지로 :
$ perl -lne '$l=length($_); print if ($l >= 3 && $l <= 10)' file
megkíván
alma
kevesen