【发布时间】:2011-09-23 02:45:35
【问题描述】:
我有一个在http://regexpal.com/ 上成功测试过的正则表达式:
^(\".+?\"),\d.+?,"X",-99,-99,-99,-99,-99,-99,-99,(\d*),(\d*)
我的测试数据如下所示:
"AB101AA",10,"X",-99,-99,-99,-99,-99,-99,-99,394251,806376,179,"S00","SN9","00","QA","MH","X"
"AB101AF",10,"X",-99,-99,-99,-99,-99,-99,-99,394181,806429,179,"S00","SN9","00","QA","MH","X"
"AB101AG",10,"X",-99,-99,-99,-99,-99,-99,-99,394251,806376,179,"S00","SN9","00","QA","MH","X"
"AB101AH",10,"X",-99,-99,-99,-99,-99,-99,-99,394371,806359,179,"S00","SN9","00","QA","MH","X"
"AB101AJ",10,"X",-99,-99,-99,-99,-99,-99,-99,394171,806398,179,"S00","SN9","00","QA","MH","X"
"AB101AL",10,"X",-99,-99,-99,-99,-99,-99,-99,394331,806530,179,"S00","SN9","00","QA","MH","X"
我想在每一行上用\1,\2,\3 替换它,例如第 1 行会给出
"AB101AA",394251,806376
如何对我在 osx 文件夹中的所有 csv 文件运行此正则表达式搜索和替换?我尝试使用 sed 但抱怨语法错误(另外我不确定它会支持这个正则表达式吗?)。另外,^(行首)和 $(行尾)锚点会逐行工作,还是会匹配文件的开头和结尾?
更新:使用 cut、awk 等的一些很好的响应可以从 csv 中获取特定字段,但我最近了解到我需要从该列表中获取数字并将它们分成 2 个子值,所以我的示例输出来自上面需要看起来像:
"AB101AA",3,94251,8,06376
据我所知,我需要为此使用正则表达式。
【问题讨论】:
-
对于第二个问题,答案是在 Javascript 中,您必须激活 ^ 和 $ 的含义,以便在 LINES 的开头和结尾匹配,这不是自动的:regular-expressions.info/anchors.html
标签: regex macos unix sed replace