当前位置: 技术问答>linux和unix
100分讨论在unix上用的去掉windows文件中的换行符(0x0D)的shell或c程序!
来源: 互联网 发布时间:2014-10-21
本文导语: 问题描述:对于换行,window下用回车换行(0A0D)来表示,unix下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。 |...
问题描述:对于换行,window下用回车换行(0A0D)来表示,unix下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。
|
找不到 dtox,不知道是哪里的? cat file1 | sed s/13$// > file2
|
在线编了一个,希望有帮助,主要是理解意思,fopen函数中的第二个参数中有个b字符,表示以二进制方式打开文件,如果不对,把rb和wb写成br和bw,我记不清了,试一试吧 #include void main(int argc, char *argv) { FILE *fr,*fw; char c; if(argc!=3){ printf("Usage: %s dosfilename unixfilenamen",argv); return; } if(NULL==(fr=fopen(argv[1],"rb")){ printf("文件%s不存在!n",argv[1]); return; } if(NULL==(fw=fopen(argv[2],"wb")){ printf("不能写文件!n"); return; } while(1){ c=fgetc(fr); if(feof(fr)) break; if(c=='r')/*用'r'来表示^M也不知道对不对,不对自己改 continue; fputc(fw,c); } fclose(fr); fclose(fw); }
|
用dtox命令就可以了! dtox 111 >222
|
用awk最简单 awk -e'{ gsub($0,...) 好像是 gsub($0, "15") printf "%sn", $0 }' infile > outfile
|
/* filename: dtox.c */ #include void main(int argc, char *argv[]) { FILE *fr,*fw; char c; if(argc!=3){ printf("Usage: %s dosfilename unixfilenamen",argv[0]); return; } if(NULL==(fr=fopen(argv[1],"rb"))){ printf("文件%s不存在!n",argv[1]); return; } if(NULL==(fw=fopen(argv[2],"wb"))){ printf("不能写文件!n"); return; } while(1){ c=fgetc(fr); if(feof(fr)) break; if(c=='r')/*用'r'来表示^M也不知道对不对,不对自己改*/ continue; fputc(c,fw); } fclose(fr); fclose(fw); } 我修改过的 版权归原主 , 呵呵 cc -o dtox dtox.c ; 然后把 dtox 拷贝到 /usr/bin/ 目录
|
#!/usr/bin/perl -w open(FHD,"path/filename"); while(){ s/^M//; } close FHD;
|
# dtox filename
|
本来就有的啊 dtox filename > filename
|
这个问题在unix 下不值得讨论, 因为在unix下有太多的工具可以解决它。 用 dtox tr awk perl vim 的查找替代功能 。。。 都可以搞掂!
|
tr -d "r" dest 100分
|
tr -d "15" B or strings A>B 给分吧
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。