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"가 모두 포함되지 않으면 맞지 않는 마지막 줄은 "@" 줄로 대체됩니다.

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

답변2

이것은 나에게 효과적입니다. 파일에 do null 값이 있어야 할 수도 있습니다.

확인하다:

vim -b file

유닉스로 변환

dos2unix file

답변3

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

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

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

관련 정보