vi에서 @로 나타나는 파일에서 빈 줄을 제거하는 방법

vi에서 @로 나타나는 파일에서 빈 줄을 제거하는 방법

vi로 파일을 열 때

~처럼

vi file

Current partition replica assignment
@
@
@
@
@
{"version":1,"partitions":[{"topic")]
@
@
@
@
@
Proposed partition reassignment configuration

그런데 이 빈 줄을 삭제하려고 해요

~처럼

sed -i 's/^ *//; s/ *$//; /^$/d; /^\s*$/d' file

또는

sed -i '/^$/d'  file

또는

sed -i '/^$/d' file

여전히 파일에 빈 줄이 있습니다

빈/빈 줄을 제거하는 방법은 무엇입니까?

답변1

사람들은~ 아니다빈 줄이지만 줄 바꿈 후에도 줄이 너무 길어서 화면에 표시되지 않습니다.

$ perl -e 'print "foo\n", "bar " x 4096' >/tmp/file
$ vim /tmp/file

foo
@
@
@
...

이것이 바로기준말한다:

시각적 모드에서 편집 버퍼의 줄(현재 줄 제외)이 표시에 사용할 수 있는 디스플레이 하단의 줄에 완전히 맞지 않으면 편집기는 해당 줄의 어떤 부분도 표시하지 않도록 선택할 수 있습니다. . 이러한 이유로 편집 버퍼의 텍스트를 포함하지 않는 디스플레이 라인은 각각 단일 '@' 문자로 구성됩니다.

vim또한 옵션 에 대한 의 문서를 살펴보십시오 display.

"lastline"이나 "truncate"가 모두 포함되지 않으면 맞지 않는 마지막 줄은 "@" 줄로 대체됩니다.

^@일반적으로 (캐럿 주의) 로 표시되는 널 바이트와 혼동하지 마십시오 . 또한 이 동작은 보편적이지 않습니다( 에서는 구현되지 않은 것 같습니다 nvi).

답변2

그것은 나에게 잘 작동합니다. 아마도 파일에 do null 값이 있어야 할 것입니다.

보려면:

vim -b file

유닉스로 변환하려면

dos2unix file

답변3

나는 그것들이 널 바이트라고 믿습니다. cat -A file다음과 같이 표시됩니다.^@

tr다음을 처리할 수 있습니다.

tr -d '\0' < file > file.new

관련 정보