gpt4 book ai didi

unix - 如何在 Gvim 或 vi 中将文本附加到行尾

转载 作者:行者123 更新时间:2023-12-01 07:11:22 26 4
gpt4 key购买 nike

我在 Windows 上使用 gvim 并且有一个包含多行的文件,如下所示

Select '305','TableA
Select '313','TableB
Select '313','TableC

我想在每行的末尾附加以下行。
', count(*) from [Tablename] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')

结果应如下所示(请注意,[TableName] 已替换为实际的表名。
Select '305','TableA', count(*) from TableA where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Select '313','TableB', count(*) from TableB where msgid in (select msgid from mainTable where row_dtm<'17NOV11')
Select '313','TableC', count(*) from TableC where msgid in (select msgid from mainTable where row_dtm<'17NOV11')

我可以通过执行在最后添加附加文本
%s/$/', count(*) from [Tablename] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')/g

但是我不知道如何读取表名并将其替换为 [Tablename]。

基本上我只是想生成几个查询。有任何想法吗?
我知道表名将始终是从行尾到第一个 ' 字符的文本,但是我如何读取它并将其添加到修改后的字符串中?

谢谢

最佳答案

你需要做一点反向引用。
将搜索词更改为:\(\a\+\)$这将匹配表名。用 \( 包围搜索词和 \)允许它在替换中被引用
在您希望表名出现的任何位置将\1 添加到您的替换字符串中。
结果应该是这样的%s/\(\a\+\)$/\1', count(*) from [\1] where msgid in (select msgid from mainTable where row_dtm<'17NOV11')/g

关于unix - 如何在 Gvim 或 vi 中将文本附加到行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8171977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com