vi를 사용하여 파일의 모든 줄을 삭제하는 방법은 무엇입니까?
현재 나는 파일의 모든 줄을 삭제하기 위해 다음과 같은 것을 사용합니다.
echo > test.txt
을 사용하여 모든 행을 삭제하는 방법은 무엇입니까 vi
?
노트:
사용하는 dd
것은 좋은 선택이 아닙니다. 행이 많을 수 있습니다.
답변1
vi
하고
:1,$d
모든 행을 삭제합니다.
:
명령을 소개 하고 커서를 맨 아래로 이동합니다. 다음 명령( )을 실행해야 하는 줄을
나타냅니다 . 이 경우 범위는 첫 번째 줄부터 마지막 줄까지입니다( 로 표시하므로 문서의 줄 수를 알 필요가 없습니다). 마지막은 지정된 행을 삭제하는 것을 나타냅니다.1,$
d
$
d
더 짧은 형식( :%d
)이 있지만 나는 그것을 전혀 사용하지 않습니다. :1,$d
"적응"이 더 쉬울 수 있습니다 . 예를 들어 :4,$-2d
처음 3개 행과 마지막 2개 행만 유지하고 나머지는 삭제합니다.
답변2
vi에서 나는 사용한다
:%d
어디
:
vi에게 명령 모드로 들어가도록 지시%
모든 행을 의미d
: 삭제
명령줄에서,
> test.txt
그것도 할 것이다.
dd 질문이 있으신가요?
dd if=/dev/null of=test.txt
어디
/dev/null
특수한 0바이트 파일입니다.if
입력 파일입니다of
출력 파일입니다
답변3
다음을 수행하는 것이 좋습니다(모든 POSIX 호환 셸에서 작동해야 함).
> test.txt
정말로 vi로 하고 싶다면 다음과 같이 하십시오:
- 1G (첫 번째 행으로 이동)
- dG(마지막 줄까지 삭제)
답변4
커서가 첫 번째 줄에 있으면(그렇지 않은 경우 : gg
또는 입력 1G
) 직접 사용할 수 있습니다 dG
. 현재 줄부터 파일 끝까지 모든 줄을 삭제합니다. 따라서 파일에서 모든 줄을 제거하려면 두 줄을 함께 혼합하면 됩니다. ( ggdG
명령 모드에서)
또는 %d
Ex 모드에서는 명령줄 예: vim +%d foo.bar
.