关于sed命令去除文本当中每个字段前后空格及tab效率低下的解决办法

最近使用到sed命令进行文本处理,因从数据库中获取到的字段当中有个别字段中间包含空格,而最终保存时候要保证每个字段数据的完整性,所以默认的文本分割方式不能使用。

首先使用read读取一行数据line_data,再根据分隔符'"'进行拆分,拆分结果保存到split_data中,因数据的列数可以确定,所以对split_data进行处理时,可根据下标进行。

line_data的格式为'test1  xxxx  "test2    "test3    "test 4    "test5    "test6'这种。

之前使用for循环,在将line_data使用双引号分隔符分割之后,再用sed命令去去除每个字段后的空格及tab键。

splitline[i]=`echo ${splitline[i]}|sed -e 's/\(^[ \t] *\)//' -e 's/\([ \t]*$\)//'`


 

但是对于一个有4000多行,每一行有39个字段的文本来说,处理下来要6分钟左右,效率极为低下。

想要寻找一种高效的解决办法。

所知的有sed、awk、grep等方式。

---------------------------------------------------------------

现在想到一种折中的办法,先将line_data里的空格都去掉,然后后面的for循环当中就不需要使用sed命令了,能将处理速度提高到17秒左右,也算是一种改进。

line=`echo ${line}|sed -e 's/\([ \t]*\)"/"/g'`


后面用for循环的时候就可以直接拆分line_data啦。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值