我有这个输入文本
16789248,16789759,"AS24155 Asia Pacific Broadband Wireless Communications Inc"我要这条短信
"AS24155","Asia Pacific Broadband Wireless Communications Inc"这个regex匹配
/(.*)(AS\d+)(\s)([^"]+).*/g用这个替代,"$2","$4"
我必须处理300 k行,如果我能够使用基于linux的命令行实用工具(如sed或awk...but ),我就不会得到匹配或匹配,即使正则表达式似乎在其他地方匹配。
我应该用不同的东西吗?
发布于 2015-04-16 12:55:30
sed是最好的选择,但是FYI在GNU awk中可以使用几乎精确的RE来完成这项工作:
$ awk 'match($0,/.*(AS[0-9]+)\s([^"]+).*/,a){printf "\"%s\",\"%s\"\n", a[1], a[2]}' file
"AS24155","Asia Pacific Broadband Wireless Communications Inc"您的原始命令可能失败了,因为只有一些工具接受\s而不是[[:space:]],而几乎没有一个工具接受\d而不是[[:digit:]] (或[0-9])。
https://stackoverflow.com/questions/29662575
复制相似问题