Linux下如何对大文件指定列执行字符删除与内容截取操作
实现方案
直接使用awk处理即可,针对100万行级别的CSV文件性能优异,全程仅需一次文件遍历,无额外IO开销。
处理命令
awk 'BEGIN{FS=OFS=","} { # 处理第4列 gsub(/-| |:/,"",$4) $4 = substr($4,3) # 处理第13列 gsub(/-| |:/,"",$13) $13 = substr($13,3,6) print }' 原始文件.csv > 处理后文件.csv
命令说明
BEGIN{FS=OFS=","}:指定输入输出的字段分隔符都为逗号,适配CSV格式gsub(/-| |:/,"",$4):删除第4列中所有横杠、空格、冒号字符substr($4,3):截取第4列从第3位开始的所有内容,等价删除前2个字符substr($13,3,6):截取第13列从第3位开始的6个字符,满足保留后续6位的需求- 处理后直接输出重定向到新文件即可,避免修改原始文件出错
性能参考
100万行32列的CSV文件在普通x86服务器上执行时间通常不超过2秒,无需额外优化即可满足需求。
内容的提问来源于stack exchange,提问作者ssingh
相关产品推荐
相关产品推荐

