请教一个vim中的正则替换问题:把查找到的内容替换为前面最近行的指定内容。

原文本格式如下:type1aaaa.任意字符fefefelb.任意字符dfei2fec.任意字符efefo3type2bbba.任意字符dsfeiieb.任意字符eie3... 原文本格式如下:
type1 aaa
a. 任意字符fefefel
b. 任意字符dfei2fe
c. 任意字符efefo3
type2 bbb
a. 任意字符dsfeiie
b. 任意字符eie3dfd8
c. 任意字符8239sdfe
type3 ccc
a. 任意字符feif3
b. 任意字符sefles
c. 任意字符eefwe55

希望替换为:
type1 aaa
a. type1 任意字符fefefel
b. type1 任意字符dfei2fe
c. type1 任意字符efefo3
type2 bbb
a. type2 任意字符dsfeiie
b. type2 任意字符eie3dfd8
c. type2 任意字符8239sdfe
type3 ccc
a. type3 任意字符feif3
b. type3 任意字符sefles
c. type3 任意字符eefwe55

请问在vim中可以实现吗?或者可以用其它软件或C语言实现吗?
补充一下:上面的aaa,bbb,ccc是文本内容,与序号a,b,c无关。
展开
 我来答
缘木求木鱼
2014-07-29 · TA获得超过2387个赞
知道小有建树答主
回答量:532
采纳率:100%
帮助的人:998万
展开全部
vim我不了解,正则替换应该都差不多。

如果情况确实如你提供的这么简单:
^(.+? )(.+\na\. )(.+\nb\. )(.+\nc\. )
替换为:
\1\2\1\3\1\4\1

▲注意4个)前都有一个空格。

我在EmEditor中试的。
其他编辑器,可能换行符\n会有区别,比如针对 Windows换行格式(CrLf) 要写成\r\n。
你试试,不行再追问讨论。
追问
谢谢!我也用emeditor。问题解决了,是我的emeditor版本实在太低了。
追答

我看到了你之前的追问:(很抱歉没空及时答复)

上面a.、b.、c.各行之间还有多个无关行需要删除,请问如何匹配这些无关行?我用(^.+\n){1,9}这样的格式想匹配1到9行,但是不行啊,是不是{1,9}这种表达方式不对啊?


很高兴你已解决。

追问不答也是浪费,希望对别人还有点用:


EmEditor 界面搜索 的“匹配多行”要开启相关设置项(如图):

▲如需帮助,可再联系。


表达式可以用:

^([\s\S]*?\n){1,9}

^(.*?\n){1,9}

▲注意要用?约束。

▲我用*而不是+,把 一个空行 作为 一行 处理。


也可用EmEditor的宏来处理,用脚本语言的“多行”属性,可以不必改动界面选项。


开启“匹配多行”可能带来一定风险,慎用。

不知详解
2014-07-30 · 知道合伙人软件行家
不知详解
知道合伙人软件行家
采纳数:609 获赞数:2252
自学计算机。

向TA提问 私信TA
展开全部
可以是可以,但要通常使用 vim 的脚本功能。 原始文件不上传,怎么帮你测试脚本? 文件格式不一定像你说的那么单纯,用正则跨行匹配会麻烦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
albumin
2014-07-28 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2404万
展开全部
sed -i '/^.\./!{
p
s/\([^[:blank:]]*\).*/\1/
h
d
}
/^.\./{
G
s/\(.\.\) \(.*\)\n\(.*\)/\1 \3 \2/
}'  文本文件名

用VIM应该是LINUX系统吧,将上面的命令原样复制到命令行,文本文件名用实际的文件名替代

更多追问追答
追问
糟糕!我没表达清楚,我是用gvim,请问这些命令怎么输入?
追答

我没说在gvim中输入这些,在终端也就是linux shell输入这些命令

/^.\./!{
p
s/\([^[:blank:]]*\).*/\1/
h
d
}
/^.\./{
G
s/\(.\.\) \(.*\)\n\(.*\)/\1 \3 \2/
}

如果嫌在终端输入麻烦的话,将上面的代码保存为文件放在与文本文件同一个目录,文件名为sedscr

在终端切换到文件所在目录,输入命令

sed -f sedscr -i 文本文件名

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
春凹找3858
2017-02-10 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.8万
采纳率:0%
帮助的人:2609万
展开全部
on assuming office as
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式