mysql - 仅在行首查找和替换

标签 mysql regex perl replace find

我是 Perl 的新手(因为今天下午出于需要才开始使用它),因为我必须处理一些需要转换为 .sql 的大而繁琐的文本文件。在完成几个基本的正则表达式查找/替换操作后,我使用了以下行:

s/$/');/g;

我最终得到了 300k 多行,如下所示:

');INSERT INTO `test` VALUES('aa1b','MediaWiki1Deletecomment','1',5609');

哎呀。所以应该把 '); 放在每行的末尾,但显然我误解了,它把它卡在了行的开头和结尾。所以有几个问题:

  1. 我该如何正确地做到这一点?显然我误解了 s/$/');/g;
  2. 现在我已经在每行开头插入了 ');,如何修复此文件,如何有选择地搜索每一行并删除 '); 位于行首而不是行尾?

这个 Perl/Regex 菜鸟谢谢你!

最佳答案

删除这些前导字符的最简单命令是使用 . 来匹配任何字符和量词,以在每行开头用单行符重复该字符 3 次:

perl -pe 's/^.{3}//' infile

关于mysql - 仅在行首查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848112/

相关文章:

php - 如何在登录表单php上使用密码验证

mysql - Amazon升级RDS连接失败

regex - 在 sed 中匹配的模式后面添加一行不起作用

Javascript正则表达式用里面的内容替换括号

perl - 当结果包含空字符串时在 perl 中拆分的奇怪行为

mysql - 在 SQL 中连接两个表,同时使用多个 WHERE 子句进行检查

python - re.findall 表现得很奇怪

perl - 在命令行中执行 perl 而无需在 UNIX 中指定 perl

perl - 从哈希值生成组合

php - 使用文本字段通过后端管理对前端菜单进行排序