关于sed命令去除文本当中每个字段前后空格及tab效率低下的解决办法
2017-05-12 15:44
423 查看
最近使用到sed命令进行文本处理,因从数据库中获取到的字段当中有个别字段中间包含空格,而最终保存时候要保证每个字段数据的完整性,所以默认的文本分割方式不能使用。
首先使用read读取一行数据line_data,再根据分隔符'"'进行拆分,拆分结果保存到split_data中,因数据的列数可以确定,所以对split_data进行处理时,可根据下标进行。
line_data的格式为'test1 xxxx "test2 "test3 "test 4 "test5 "test6'这种。
之前使用for循环,在将line_data使用双引号分隔符分割之后,再用sed命令去去除每个字段后的空格及tab键。
但是对于一个有4000多行,每一行有39个字段的文本来说,处理下来要6分钟左右,效率极为低下。
想要寻找一种高效的解决办法。
所知的有sed、awk、grep等方式。
---------------------------------------------------------------
现在想到一种折中的办法,先将line_data里的空格都去掉,然后后面的for循环当中就不需要使用sed命令了,能将处理速度提高到17秒左右,也算是一种改进。
后面用for循环的时候就可以直接拆分line_data啦。
首先使用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啦。
相关文章推荐
- access用sql创建表,文本类型字段添加记录时文本后有空格,解决办法
- 关于cmd中执行命令路径包含空格的解决办法
- 关于sql字符串字段的模糊查询与字符串字段里筛选部分值的记录的解决办法
- SQL SERVER 数据库选项设置错误导致跨数库访问效率低下,及解决办法
- "空格在每个浏览器中显示的距离都不一样"的解决办法
- 关于表格中td文本溢出的解决办法......
- 关于kettle前后无依赖项关系的解决办法
- CentOS中root使用Vi不能高亮显示的解决办法以及TAB补全命令
- ubuntu中终端TAB键不补全命令解决办法
- 关于Mysql当中"Got error 134 from storage engine"的解决办法
- 关于-/bin/sh: 命令:not found的解决办法
- 关于sphinx+PHP在高并发时响应性能低下的解决办法
- 关于网页中图片名包含中文(或空格)无法显示的解决办法
- 关于-/bin/sh: 命令:not found的解决办法
- VC中关于路径中含有空格问题的解决办法
- 效率低下的不良习惯与解决办法
- 一个mount问题解决办法,关于partprobe命令
- 关于arm-linux-gcc切换到root用户找不到命令的解决办法(command not found)
- 关于win7无法查本机ip win7命令模式cmd下ipconfig、ping等命令无法使用的一般解决办法
- JAVA中如何去除字符串前后的全角空格(当中保留)(轉)