关于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啦。

猜你喜欢

转载自blog.csdn.net/u011803182/article/details/71740193