vi - 줄에서 패턴을 찾아 해당 줄 끝에 ";"를 추가합니다.

vi - 줄에서 패턴을 찾아 해당 줄 끝에 ";"를 추가합니다.

;여러 테이블에 대한 ddl이 포함된 txt 파일에 줄 끝을 추가하고 싶습니다 .

예를 들어:

LOCATION:
 'hdfs://HDP**/apps/hive/warehouse/bps_uat.db/maaa'

;위에서 언급했듯이 모든 줄의 끝에 추가 해야 합니다 .

답변1

Freddy의 답변 외에도 :global. 예를 들어:

:g/maaa/norm A;

의미는 다음과 같습니다

:g/      " On each line matching this regex:
maaa     " 'maaa'
norm A;  " Run 'A;' as if I had manually typed

질문에서 어떤 행에 적용할지 명확하지 않기 때문에 "maaa"를 필요에 맞게 조정해야 합니다. :g/hdfs/norm A;예를 들어 "hdfs"라는 텍스트가 포함된 모든 줄에는 세미콜론이 추가됩니다.

답변2

;로 끝나는 모든 줄에 a를 추가하려면 maaa'다음 대체를 사용할 수 있습니다. 누르고 Esc들어가세요

:%s/maaa'$/&;/

설명하다:

  • :%s/한 줄에 하나씩 교체
  • maaa'$maaa'줄 끝에서 일치$
  • /&;/일치하는 패턴으로 교체하고;


;공백으로 시작하고 'hdfs://a로 끝나는 모든 줄에 a를 추가하려면 '다음 대체 방법을 사용할 수 있습니다. 다시 누르고 Esc들어가세요

:%s/^ 'hdfs:\/\/.*'$/&;/

설명하다:

  • :%s/한 줄에 하나씩 교체
  • ^ 'hdfs:\/\/.*'$줄의 시작 ^, 그 뒤에 공백 문자, 그 뒤에 hdfs://( /a 로 이스케이프해야 함 \), 임의의 문자 .*, 그 뒤에 '줄의 끝과 일치합니다.$
  • /&;/일치하는 패턴으로 교체하고;

문제가 발생하면 언제든지 Esc+를 사용하여 작업을 취소할 수 있습니다.u

관련 정보