在做数据库运维的时候,不知道大家有没有遇到过,一个特别大的文件(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由于代码fio.open("test.txt",ios::in|ios::out);,这里写死了文件名称,所以你要编辑的文件名称只能是test.txt,如果想换成别的文件名称,需要修改源代码。#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<=line_num-1) { fio<>num; return num;}
