我有一个文件,我只想替换以“at line”结尾的行;与“在[line_number]行;”搜索并替换sed以38 MB文件的天文时间
每个偶数行都有目标语句。
例如输入文件:
0000001:use test;
0000002:system echo at line ;
0000003:insert into pet values ('9999', '7777');
0000004:system echo at line ;
0000005:insert into pet values ('9999', '7777');
0000006:system echo at line ;
示例输出文件:
0000001:use test;
0000002:system echo at line 2;
0000003:insert into pet values ('9999', '7777');
0000004:system echo at line 4;
0000005:insert into pet values ('9999', '7777');
0000006:system echo at line 6;
我已用awk生成sed命令写入的脚本。运行时,需要几天才能完成1000055行文件的任务。
有更好的(基于脚本的)技术吗?
这里是当前方法的要点是:
$head -6 c.txt
0000001:use test;
0000002:system echo at line ;
0000003:insert into pet values ('9999', '7777');
0000004:system echo at line ;
0000005:insert into pet values ('9999', '7777');
0000006:system echo at line ;
$wc c.txt
1000055 5500241 39501572 c.txt
$cat c.txt | grep "at line" | awk -F":" '{printf("sed -i \x27%ds/at line ;/at line %d;/\x27 c.txt\n", $1, $1)}' > a.sh
$time sh ./a.sh
注:其中测试正在运行是一个服务器类计算机上的单个VM的机器。我想用台阶标记工具的结果发布它的细节来证明它不是问题。但是我认为这并不是必须的,因为问题是显而易见的(在整个文件上运行sed重复1000055次/次)给在这种情况下有一定知识的人。顺便说一句,我知道有些人不喜欢用猫。但我习惯了。为了主要讨论请求忽略。
'这里不需要grep',您可以用'awk'的一样。 – Inian
我看到它更好。 –