주어진 범위에서 줄 길이를“그리프”하는 방법은 무엇입니까?


28

참고 : 이 질문은이 Q & A를 보완 합니다. 주어진 범위에서 * 길이 *가 아닌 줄 길이에 대해 "그립"하는 방법은 무엇입니까?


길이가 최소 3 자 이상이지만 10 자 이하인 텍스트 파일 (개행 문자로 분리 된 단어 목록)에서 줄만 가져와야합니다.

예:

입력:

egyezményét
megkíván
ki
alma
kevesen
meghatározó

산출:

megkíván
alma
kevesen

질문 :이 작업을 어떻게 수행 할 수 bash있습니까?


9
grep -x '.\{3,10\}'
Costas

@Costas는 훌륭하고 sed도 마찬가지입니다. 완전한 답변을 게시하십시오.
오리온

답변:


37
grep -x '.\{3,10\}'

어디에

  • -x 전체 라인에 패턴 일치
  • . 어떤 상징
  • {3,10} 이전 심볼의 3 ~ 10 배에서 정량화 (어떤 경우 든)

10

egrep 사용

egrep '^.{3,10}$'

3 자 이상 10 자 이하인 줄의 시작에서 끝까지 일치합니다.


1

사용 sed:

sed '/^.\{3,10\}$/!d'

또는:

sed -r '/^.{3,10}$/!d'

0

사용 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.