특정 크기가 아닌 행을 찾는 sed 명령

특정 크기가 아닌 행을 찾는 sed 명령

이 파일이 있고 크기가 21이 아닌 모든 줄을 인쇄하고 싶습니다.

PASY$ type a.a
000008050110010201NNN
000008060810010201NNN
21212000008070110010201NNN
000008080310010201NNN
000008090510010201NNN
000008050110010201NNN
000008060310010201NNN
00008070110010201NNN

답변1

$ sed '/^.\{21\}$/d;q' input-file

sedd시작과 끝 사이에 정확히 21자가 있는 첫 번째 줄을 삭제합니다(따라서 인쇄하지 않습니다)("삭제"와 같은 끔찍한 단어를 사용함에도 불구하고 실제 파일은 수정되지 않습니다) . 그러한 행을 찾으면 즉시 다른 행 처리를 중지합니다.

답변2

sed -n '/^.....................$/!p' < input-file

^줄 시작( )과 줄 끝( ) $사이에 21자가 없으면 인쇄합니다.

보다 긍정적으로, d엘레테 라인은21자 길이(기본값은 다른 줄을 인쇄함):

sed '/^.....................$/d' < input-file

관련 정보