秒级注释100G大文件的前两行数据 网友:太实用了

网友投稿 773 2022-10-16

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

秒级注释100G大文件的前两行数据 网友:太实用了

场景简介

在做数据库运维的时候,不知道大家有没有遇到过,一个特别大的文件(100G),就想注释掉前2行记录,不想让数据库执行。

这个时候,你会怎么做,相信很多人会用vi或者vim,去编辑这个100G文件,只要你用了vi或者vim,你的噩梦就会开始,操作系统会将文件整个读取,如果你内存不够大,这个过程绝对让你终生难忘的经历,估计等个10几分钟,就能看到vi的编辑界面了,用dd删除掉不想要的2条记录,然后非常潇洒的保存,结果又会等个10多分钟,运气好的话,可能会保存成功,运气不好,可能你的文件就直接损坏了。

what,vi太落伍了,sed知道不,用sed直接删除就可以,于是

删除第N行:

sed -i 'Nd' filename

删除第M到N行:

sed -i 'M,Nd' filename

如果过你用了,就是五十步笑百步了,这里就不多说sed删除的过程了。

网上有一个大神用C++写了一个快速注释前两行数据的程序,可是程序只能注释前几行,不够灵活,我稍微改了一下程序,可以支持指定注释某个区间行数,和制定行数据,其程序代码如下所示

编译test.cpp文件

g++ test.cpp -o test

使用“-”注释文件2--4行内容

./test - 2 4./test \# 2 3./test 2 4

读取源文件名称为:test.txt网上有一个大神用C++写了一个快速注释前两行数据的程序,可是程序只能注释前几行,不够灵活,我稍微改了一下程序,可以支持指定注释某个区间行数,和制定行数据,其程序代码如下所示

#include#include#include #include using namespace std;bool parse_char(char );int parse_int(char*);int main(int argc,char *argv[]){ if((argc!=4)&parse_char(argv[1][0])) { cout<<"usage:note -|#|/ start_num end_num"<=line_num-1) { fio<>num; return num;}

上一篇:小操作有大效用-一个数据库碎片整理的优化案例
下一篇:隐性事件驱动的溯源分析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~