日期:2014-05-16  浏览次数:20911 次

awk 对$0操作
awk 对$0进行如下操作FS=","
1 去掉$1
2 如果最后一列$0以“,”结尾($23是否为空)那么去掉该逗号
举例说明:
正常情况($0的值):
a,1,3,2,4,5,2,5
异常情况($0的值):
a,1,3,2,4,5,2,5,
现在就要先去掉"a,",然后判断5后边是否有一个逗号,如果有就去掉

因为文件是从xls文件转换成文本文件的,xls文件最后一列的后边一列(没有值)可能因为进行了某些写操作虽然最后没有写入任何内容,然后转换成文本后就多了一个逗号,当然没有进行任何操作的行后边肯定不会多一个逗号

------解决方案--------------------
JScript code
awk -F "," '{ if(match($0,/.*,$/)){for(i=2;i<NF-1;++i) printf("%s%s",$i,FS);printf("%s\n",$i)} else {for(i=2;i<NF;++i) printf("%s%s",$i, FS);printf("%s\n",$i);}}' fileName

------解决方案--------------------
也差不多吧

awk -F, '{sub(/[^,]*,/,""); sub(/,$/,""); print}' yourfile
------解决方案--------------------
awk -F, '{sub(/[^,]*,/,""); sub(/,*$/,""); sub(/^,*/,""); print}'

这个应该适用的
------解决方案--------------------
探讨
学习一下,后面那个数字1 表示什么意思?

------解决方案--------------------
探讨

引用:

awk '{print gensub(/^, (.*[^, ])[, ]+$/,"\\1","g")}'


这个输出和源文件一样