我不知道大家在输送数据库的时候有没有遇到过,但是我想注释掉非常大的文件(100G ),前两行的记录,不想让数据库运行。
这个时候,你怎么办? 我相信很多人会使用vi和vim来编辑这个100G文件。 只要使用了vi和vim,噩梦就开始了。 OS读取整个文件。 如果内存不够,这个过程绝对会是一生难忘的经历。 等上十几分钟,你就会看到vi的编辑界面。 删除dd中不需要的两个记录,然后
what,vi太过时了,sed不,我知道用sed直接删除就行了,所以删除第n行: sed -i 'Nd' filename
删除第m行到第n行: sed -i 'M,nd '文件名
如果你用的话,五十步一百步。 这里不涉及sed删除的过程。
网上的一位大神用c写了一个快速评论前两行数据的程序,但是程序只能评论前几行,没有灵活性。 稍微改变程序,使之能够应对某区间行数的指定和行数据的指定。 其程序代码如下
编译test.cpp文件
g测试.计算机测试
“--”使用注释文件2--4行的内容
./test - 2 4
./test # 2 3
. /测试/24
读取源文件名为test.txt
代码fio.open('test.txt ',ios:in|ios:out ); 因为这里写着文件名,所以要编辑的文件名只有test.txt。 如果想更改为其他文件名,需要修改源代码。
# #包含iostream
# #包括fstream
# #包含类型
# #包括流
单一名称空间固态硬盘;
ol parse _ char (字符;
int parse _ int (字符*;
int main (整数圆弧,角色*圆弧(] ) ) ) ) ) ) ) ) ) ) ) ) ) )但) ) )到) ) ) )。但(一个或多个方面中的一个或多个方面) ) ) ) )
{
阿瑟卡!=4) parse _ char (argv10 ) )
{
使用:备注-|| /开始_编号_编号结束;
cout './note-23 '最终版;
返回0;
}
intline_num=parse_int(argv[2];
intend_num=parse_int(argv[3];
char str[256];
//文件处理程序
串流Fio;
串流点;
串流点;
open (' test.txt ',IOs : in|IOs : out );
if (fio.is _开放) )
{
for (英制=0; iend_numfio.good (; I ) )
{
p_pos=fio.tellp (;
g_pos=fio.tellg (;
: ' p _ pos终端出口销售点;
出口: ' g _销售点终端;
if (I=线号-1) ) )。
{
fio argv [1]阿rgv [1]0]阿rgv [1]0';
}
p_pos=fio.tellp (;
g_pos=fio.tellg (;
: ' p _ pos终端出口销售点;
出口: ' g _销售点终端;
getline (str,256 );
}
关闭(;
}
返回0;
}
布尔稀疏字符(字符)
if(x=='-'|x=='#'|x='/' )
返回真;
else
返回假;
}
int parse _ int (字符串) {
整数;
串流ss (s;
数字;
返回号;
(} )。