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/1行に1つずつ交換
  • maaa'$maaa'行末で一致$
  • /&;/一致するパターンに置き換えて;


;空白で始まり'hdfs://a で終わるすべての行に a を追加するには、'次の代替方法を使用できます。もう一度押しEscてください。

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

説明する:

  • :%s/1行に1つずつ交換
  • ^ 'hdfs:\/\/.*'$行の先頭^、そのあとに空白文字、その後にhdfs:///aでエスケープする必要がある\)、ランダムな文字、.*その後に'行の終わりと一致します。$
  • /&;/一致するパターンに置き換えて;

問題が発生した場合は、いつでもEsc+を使用して操作をキャンセルできます。u

関連情報