使用如下 命令可是实现:cat page.json |grep -Po 'https?://[^"\s<>]+\.(jpg|jpeg|png|gif|webp|svg|bmp)(?=[\s"''>])'
mongodb从原来库导出老的文本文件(不是二进制):
mongoexport --uri="mongodb://aaa:bbb@127.0.0.1:27017/nt_shop?authSource=admin" -c tolPagePackCmpt -o page.json
其中:aaa是用户,bbb为密码,nt_shop 为 mongodb的库名字,-c 后面的tolPagePackCmpt 为集合的名字, -o 后面的page.json 为导出的文本文件,注意mongoexport 不能对正库导出,只能是集合。
mongodb把导出的“文本”文件重新导入到新的库
在 Vim 的替换语法里,
\r 代表 “插入 字符”(即 Unix 换行),
而 \n 代表 “NULL 字符(ASCII 0)”,不是换行!
因此
vim
:%s/,/\r/g
把逗号替换成 ,一行变两行,正是你要的效果;
vim
:%s/,\n/g
这里的 \n 被 Vim 当成 NULL,当然找不到也替换不了。
Vim 里与“换行”相关的内部表示
含义
\r 插入 LF(Unix 换行)
\n 插入 NULL(ASCII 0)
\_s 匹配任何空白(空格、Tab、换行)
\n 在 查找模式 里才代表“换行符”本身,替换模式 里仍是 NULL
总结
查找时想匹配换行,用 \n (或 \_s )
替换时想“插入换行”,必须用 \r ,而 不是 \n
所以你的命令
vim
:%s/,/\r/g
就是 Unix 下“逗号变换行”的正确写法; \n 在替换侧永远不会给你换行