我有一个正则表达式,我在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文件运行regex搜索和替换?我尝试使用sed,但它出现了语法错误(而且我不确定它是否支持这个正则表达式?)。另外,^(行首)和$(行尾)锚点是否逐行工作,或者它们是否匹配文件的开头和结尾?
更新:一些很好的响应使用cut,awk ect,它们从csv中获取特定字段,但我最近了解到我需要从该列表中提取数字并将它们切成两个子值,因此上面的示例输出需要如下所示:
"AB101AA",3,94251,8,06376据我所知,我需要使用正则表达式。
发布于 2011-06-27 04:43:56
您想提取字段1、11和12吗?对于这样的任务,awk或cut真的很棒!例如。
awk -F, '{print $1, $11, $12}' input使用cut
cut -d, -f1,11,12 input 使用perl。-a打开自动拆分模式- perl会自动将空格上的输入行拆分到@F数组中。-F与-a一起使用,以选择要在其上拆分行的分隔符。
perl -F, -lane 'printf "%s, %d, %d\n", $F[0], $F[10], $F[11]' input ...and最后,一个纯bash解决方案
#!/bin/bash
IFS=,
while read -ra ARRAY;
do
echo ${ARRAY[0]}, ${ARRAY[10]}, ${ARRAY[11]}
done < inputhttps://stackoverflow.com/questions/6486574
复制相似问题