我是Perl的新手(就像在今天下午刚开始玩它一样)因为我不得不处理一些需要转入.sql的大型,繁琐的文本文件。在完成几个基本的正则表达式查找/替换操作之后,我使用了以下行:
s/$/');/g;
我最终获得了300k +行,看起来像这样:
');INSERT INTO `test` VALUES('aa1b','MediaWiki1Deletecomment','1',5609');
糟糕。所以这只是将');
放在每一行的END处,但显然我误解了它并且它在行的开头和结尾都停留了。所以有几个问题:
s/$/');/g;
');
,如何修复此文件,如何有选择地搜索每一行并删除该行开头的');
而不是结束?这个Perl / Regex noob谢谢你!
答案 0 :(得分:3)
删除这些主要字符的最简单命令是使用.
来匹配任何字符和量词,在每行的开头用一行代码重复三次:
perl -pe 's/^.{3}//' infile
答案 1 :(得分:2)
Perl使用-i
开关启用了就地编辑工具。在您的情况下使用它,如
$ perl -i.bak -pe "s/$/');/" *.sql
这将使用您的原始代码创建一堆*.sql.bak
个备份文件,修改后的内容将显示在您的*.sql
文件中。
要纠正已经冲过的那些,请运行
$ perl -i.bak -pe "s/^');//" *.sql