첫 번째 줄을 파일 끝으로 이동하는 방법은 무엇입니까? [폐쇄]

첫 번째 줄을 파일 끝으로 이동하는 방법은 무엇입니까? [폐쇄]

패턴이 포함된 첫 번째 줄 뒤의 줄을 삭제 invHn3ion?한 다음 첫 번째 줄을 파일 끝으로 이동하려면 어떻게 해야 합니까?

이 모든 표현은 어디서 배울 수 있나요?

답변1

이보다 더 빠르고 쉬운 키 입력이 가능하지만 제한된 vi기술을 사용하면 다음과 같습니다.

  • invHn3ion으로 이동하시겠습니까?

    /invHn3ion?
    
  • 한 줄 아래로 이동

    j
    
  • 이 줄 삭제

    dd
    
  • 첫 번째 행으로 이동

    1G
    
  • 이 줄 삭제

    dd
    
  • 파일 끝으로 이동

    G
    
  • 반죽

    p
    
  • 구하다

    ZZ
    

답변2

더 간단한 것부터 시작해 보겠습니다. vi 편집기에서 첫 번째 줄을 끝으로 이동하려면 명령 ex( m이동)을 사용합니다.

:1m$

인수는 1소스 범위이며 첫 번째 줄입니다. 범위 2,15m$또는 패턴 일치를 사용할 수 있습니다 /a.*bc/m$. 대상은 $파일의 마지막 줄을 나타냅니다. 이 m명령은 움직이는 재료를 배치합니다.뒤쪽에대상 위치.

라인 0은 없지만 대상 0은 파일의 상단을 지정합니다. 따라서 선을 원래 위치로 다시 이동하려면 다음을 수행하십시오.

:$m0

즉, 마지막 행을 이동합니다.뒤쪽에가상의 라인 0(라인 1 앞).

좋아요, 그러면 패턴과 일치하는 첫 번째 줄을 이동하면 어떨까요 invHn3ion? 첫째, 현재 위치는 어디든 될 수 있다고 생각한다. 현재 위치가 아닌 첫 번째 행부터 검색을 시작하려고 합니다.

:1/invHn3ion/m$

여기서 일어나는 일은 실제로 maddress 매개변수에서 작동하는 것 입니다 /invHn3ion/. 이는 1중복된 주소이므로 평가 후 폐기 됩니다 . 두 개의 개별 명령을 사용하여 동일한 효과를 얻을 수 있습니다.

:1
:/invHn3ion/m$

이 명령에는 이동보다는 복사하는 m형제(전송)가 있습니다 .t


  1. 바라보다Ex에서 주소 지정"명령은 0개, 1개 또는 2개의 주소를 사용합니다..."라는 단락으로 시작하는 POSIX 표준 섹션입니다.

답변3

첫 번째 행을 마지막 행으로 이동하려면 sed시도해 볼 수도 있습니다.

예를 들어

$ sed -n '1p' file >> file && sed -i '1d' file

편집하다:

$ sed -i '1h;1d;$G' file

대체 GNU sed 스크립트입니다. Plan 9에서는 "-i" 옵션을 사용할 수 없습니다.

답변4

sed의 경우 명령은 다음과 같습니다.

sed '/invHn3ion?/{h;d}; ${g}' FILE

그리고 내가 아는 한, sed 구문은 vi 구문과 매우 유사합니다.

이것을 /PATTERN/으로 읽으십시오. PATTERN이 발견되면 명령을 실행하십시오. h:= 패턴을 복사하여 공간을 확보하고, d:= 라인을 삭제하십시오. $는 정규식의 일부가 아닌 경우 파일의 마지막 줄을 나타냅니다. 따라서 마지막 줄에서 g:=는 예약된 공간의 내용을 가져오고 이전에 저장된 패턴을 인쇄합니다.

sed/awk/perl 정규식에 대한 튜토리얼에서 이에 대해 배울 수 있습니다. vi/vim에는 YT 비디오와 책도 있습니다.

관련 정보