从File-Unix中删除特殊字符

时间:2016-06-15 20:26:18

标签: linux unix command-line scripting

我有一个应该格式化的文件:

   ID     QTY 
xxxxxxxxx,xxx 
xxxxxxxxx,xxx 
xxxxxxxxx,xxx 
xxxxxxxxx,xxx 
xxxxxxxxx,xxx 

有时会像这样格式化,但使用特殊字符分隔前9位数字。

xxx,xx,xx,xx,xxx
xxx/xx/xx/xx,xxx
xx.xxx.xxxx,xxx

我想知道如何从整个ID中删除任何特殊字符。

2 个答案:

答案 0 :(得分:0)

可能有用。如果字段长度都是固定的,即9和3个字符,则使用此字符。

sed  's/[\/.\,]//g' test2|awk '{print substr ($0, 1,9)","substr ($0, 10,13)}'

如果只修复第一个字段长度,即9个字符,则使用此命令。

sed  's/[\/.\,]//g' test2|sed -r -e 's/^.{9}/&,/'

答案 1 :(得分:0)

这是一个sed脚本。它会删除每个特殊字符,然后在包含特殊字符的第九行之后重新插入,

sed -r '/[./,]/ {s/[,/.]//g; s/(.{9})(.*)/\1,\2/g}'