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'在行尾$
  • /&;/替换为匹配的模式并;


要将 a 添加;到以空格开头并'hdfs://以 a 结尾的所有行',您可以使用以下替换。再次按Esc,然后输入

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

解释:

  • :%s/每行替换一个
  • ^ 'hdfs:\/\/.*'$匹配行首^,后跟空格字符,后跟hdfs:///需要用a转义\),后跟任意字符.*,后跟'和行尾$
  • /&;/替换为匹配的模式并;

如果出现问题,您始终可以使用Esc+撤消操作。u

相关内容