文本文件改造方法
有个文件10M左右,文件格式如下:
10
20030118759141687 0 0004201301141427102013011414401300078300001061050000311426
20030118759141687 0 0004201301141427102013011414401300078300001061050000311426
20030118759141687 0 0004201301141427102013011414401300078300001061050000311426
90
我想批量对他们做下处理:
把第一行10和最后一行90去掉;
把第6个字符、第30个字符、第33个字符后边加添加逗号‘,’;
文件重新保存,不变位置、不变名称。
最好是sh,perl也可以。
小弟对脚本语言了解颇浅,大神们赐教啊。 Perl
[解决办法]
sed script:
1 d # 去掉第一行
$ d # 去掉最后一行
s/^\(.\{6\}\)\(.\{24\}\)\(.\{3\}\)\(.*\)$/\1,\2,\3,\4/ # 加逗号,自己可调整6,24,3
/tmp/ cat sss
10
20030118759141687 0 0004201301141427102013011414401300078300001061050000311426
20030118759141687 0 0004201301141427102013011414401300078300001061050000311426
20030118759141687 0 0004201301141427102013011414401300078300001061050000311426
90
/tmp/ cat reformat
1 d # 去掉第一行
$d # 去掉最后一行
s/^\(.\{6\}\)\(.\{24\}\)\(.\{3\}\)\(.*\)$/\1,\2,\3,\4/ # 加逗号,自己可调整6,24,3
/tmp/ sed -f reformat sss
200301,18759141687 0 00042013,011,41427102013011414401300078300001061050000311426
200301,18759141687 0 00042013,011,41427102013011414401300078300001061050000311426
200301,18759141687 0 00042013,011,41427102013011414401300078300001061050000311426
1 d # 去掉第一行
$ d # 去掉最后一行
# 加逗号,自己可调整6,24,3, 在\4前插一个标记B(任何不会出现的字符都行),方便下一个命令操作
s/^\(.\{6\}\)\(.\{24\}\)\(.\{3\}\)\(.*\)$/\1,\2,\3,B\4/
# 继续处理[后面的部分
s/B\(.\{4\}\)\(.\{10\}\)\(.*\)$/\1, \2, \3/
/tmp/ sed -f sff sss
200301,18759141687 0 00042013,011,4142, 7102013011, 414401300078300001061050000311426
200301,18759141687 0 00042013,011,4142, 7102013011, 414401300078300001061050000311426
200301,18759141687 0 00042013,011,4142, 7102013011, 414401300078300001061050000311426