- 论坛徽章:
- 0
|
原帖由 nully 于 2008-10-25 15:13 发表 ![]()
先对楼上几位表示感谢
对于seelnd的touch方法我也有用过,但由于是在cygwin上跑,大量的时间耗在system(touch)上了,不合算
zhangshebao的把非法字符替换掉也不太可行,因为$1有中文情况
...
出错情况 ...
这个可以,在cygwin上测试过了:
echo "a b
aaa/bb ccc
工人 bbb
aaaa#aa/ 333"|awk '
fname[$1]==""{
if(0==system("echo "$2">>"$1".txt"))fname[$1]=$1".txt";
else {
print "ERROR:echo "$2">>"$1".txt">>"出错日记.log";
last1=$0;gsub(/[^a-zA-Z_\-0-9\200-\377]/,"#",last1)
if(0==system("echo "$2">>"last1"改名.txt")){
fname[$1]=last1"改名.txt";
print $1".txt 改名为:"last1"改名.txt">>"出错日记.log";
} else{
print "ERROR:echo "$2">>"last1"改名.txt">>"出错日记.log";
}
}
}
fname[$1]!=""{ print $2 >> fname[$1] }
' |
|