주어진 범위에서 줄 길이 *에 대한 * grep하는 방법?


17

참고 : 이 질문은이 Q & A를 보완 합니다. 주어진 범위에서 줄 길이를 "잡는 방법"은 무엇입니까?


8 자 이하, 63 자 이하, 8 자 이하, 63 자 이하의 줄은 어떻게 그 리핑 할 수 있습니까?

따라서 허용되는 문자 수는 다음과 같습니다.

7 6 5 4 3 2 1 0

...과...

64 65 66 67 ...

3
나는 당신이 요구 한다는 것을 알고 grep있지만 awk, 특히 추가 처리 등이 필요한 경우 (매우 유연하고 읽기 쉬운 ) 고려할 수도 awk '( length($0)<8 ) || ( length($0)>63 )' 있습니다. 또는 $ 0에 awk '{ l=length($0) ; if (( l<8 ) || l>63 ) { print $0 ;} }'
처리량

@ mikeserv-예, 다시 살펴보면 아마도 다른 Q & A를 향해 Dup과 같이하는 것이 더 합리적 일 것입니다.
slm

@ mikeserv-일반적으로 고통 스럽습니다. 답변을 Q 중 하나에 병합해야 원본에서 삭제됩니다. "질문은 99 % 동일 할 때 병합되어야하며 여러 중복 질문의 모든 답변을 한 곳에 모아두면 도움이됩니다. 그러면 답변이 삭제되고 대상 질문으로 이동 한 다음 떠나게됩니다. 현재 질문은 병합 대상으로 연결되는 스텁으로 사용됩니다. "
slm

내 의견은 어떻게 되었습니까?
Dmitry Grigoryev

@DmitryGrigoryev-누군가가 그것을 좋아하지 않았다고 생각합니다. 그곳에 있었던 사람에게서 가져 가십시오. 잊어 버리십시오.
mikeserv

답변:


38
grep -xv '.\{8,63\}' <input >output

grep-x스위치는 전체 라인 일치를 나타냅니다. 즉, 일치하는 패턴은 머리부터 꼬리까지 라인을 정의해야합니다. 하기...

grep -x pattern

... 일반적으로 ...

grep ^pattern$

grep-v스위치는 라인 선택에 대한 패턴의 영향을 무효화합니다. 일반적으로 ...

grep pattern

... 패턴과 일치하는 줄만 선택하지만 -v부정 패턴 에서는 일치 하지 않는 줄만 선택합니다.

... 그리고 ...

grep -xv '.\{8,63\}'

... 8 자에서 63 자 사이의 머리부터 꼬리까지 구성된 모든 줄과 일치하며, -v부정 된 선택은 grep다른 모든 것을 인쇄하기 만합니다 .

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