파일의 각 줄의 바이트 수를 확인하고 싶습니다.
바이트 수가 예상한 숫자가 아닌 경우 레코드와 해당 줄 번호가 새 파일에 저장됩니다.
답변1
노력하다:
expected=72
<a-file LC_ALL=C grep -nxvE ".{$expected}" >a-new-file
또는:
<a-file LC_ALL=C awk -v expected=72 '
length != expected {print FNR, $0}' >a-new-file
length
줄 구분 기호 없이 길이를 반환합니다. 일부 grep
구현 awk
에서는 NUL 바이트 또는 매우 긴 줄이 포함된 입력을 차단합니다.
GNU는 awk
다음을 사용하여 구분 기호를 포함한 레코드 길이를 얻을 수는 없지만 얻을 수 있습니다.
<a-file LC_ALL=C gawk -v expected=73 '
length($0 RT) != expected {print FNR, $0}' >a-new-file
또는 다음을 사용할 수 있습니다 perl
.
<a-file perl -nse '
print "$. $_" unless length($_) == $expected' -- -expected=73 >a-new-file
-l
줄 구분 기호를 고려하지 않으려면 이 옵션을 추가하세요. perl
바이트는 로케일에 관계없이 기본적으로 사용되므로 필요하지 않습니다 LC_ALL=C
.