5-8万年薪顶级嵌入式,京沪深就业地 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  系统维护与使用区

100分讨论在unix上用的去掉windows文件中的换行符(0x0D)的shell或c程序!

楼主cloudred(?)2001-03-19 16:41:00 在 Linux/Unix社区 / 系统维护与使用区 提问

      问题描述:对于换行,window下用回车换行(0A0D)来表示,unix下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。  
        问题点数:100、回复次数:21Top

1 楼dynasty_tang(唐朝)回复于 2001-03-21 14:26:00 得分 0

请写个?就这么简单?Top

2 楼cloudred(?)回复于 2001-03-22 12:06:00 得分 0

是呀,就这么简单。  
  我们头说了:“生活本来就是这么简单!”Top

3 楼jerrymi(泥巴)回复于 2001-03-22 14:46:00 得分 0

用二进制传送文件就没这个问题了Top

4 楼Kevin_qing()回复于 2001-03-22 14:59:00 得分 0

用strchr查找,在替换为space好了Top

5 楼007sampras(007sampras)回复于 2001-03-23 18:05:00 得分 5

#   dtox   filenameTop

6 楼cloudred(?)回复于 2001-03-23 18:19:00 得分 0

有个在windows下用的win->unix的程序,可惜常常进入Unix看文件时,发现文件里有好多^M,不想再退回到windows转换后再退到unix里,退来退去就没兴致搞了!我是unix新手,也想学学unix下的c编程,对诸位高手来说,这个小程序5分钟都用不了吧!呵呵Top

7 楼cloudred(?)回复于 2001-03-23 18:25:00 得分 0

007sampras:   dtox   filename就行?Top

8 楼waq(我要它干什么?)回复于 2001-04-09 18:17:00 得分 15

在线编了一个,希望有帮助,主要是理解意思,fopen函数中的第二个参数中有个b字符,表示以二进制方式打开文件,如果不对,把rb和wb写成br和bw,我记不清了,试一试吧  
   
  #include   <stdio.h>  
   
  void   main(int   argc,   char   *argv)  
  {  
  FILE   *fr,*fw;  
  char   c;  
  if(argc!=3){  
  printf("Usage:   %s   dosfilename   unixfilename\n",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);  
  }  
  Top

9 楼waq(我要它干什么?)回复于 2001-04-09 18:19:00 得分 0

有注释的那一行尾少了   */   号,加上吧Top

10 楼Daiver(Daiver)回复于 2001-04-10 01:00:00 得分 10

用dtox命令就可以了!  
  dtox   111   >222  
  Top

11 楼Azz1()回复于 2001-04-10 01:00:00 得分 10

用awk最简单  
  awk   -e'{  
        gsub($0,...)         好像是   gsub($0,   "\015")  
        printf   "%s\n",   $0  
        }'     infile   >   outfileTop

12 楼hem(何明)回复于 2001-04-11 16:47:00 得分 10

/*   filename:   dtox.c     */  
   
  #include   <stdio.h>  
   
  void   main(int   argc,   char   *argv[])  
  {  
  FILE   *fr,*fw;  
  char   c;  
  if(argc!=3){  
  printf("Usage:   %s   dosfilename   unixfilename\n",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/   目录Top

13 楼bomb_hero(木头青蛙)回复于 2001-04-11 18:41:00 得分 5

本来就有的啊  
  dtox   filename   >   filenameTop

14 楼penguincn(小企)回复于 2001-04-12 13:53:00 得分 5

这个问题在unix   下不值得讨论,  
  因为在unix下有太多的工具可以解决它。  
  用   dtox    
        tr  
        awk  
        perl  
        vim   的查找替代功能  
      。。。  
    都可以搞掂!  
   
  Top

15 楼penguincn(小企)回复于 2001-04-12 13:54:00 得分 0

这个问题在unix   下不值得讨论,  
  因为在unix下有太多的工具可以解决它。  
  用   dtox    
        tr  
        awk  
        perl  
        vim   的查找替代功能  
      。。。  
    都可以搞掂!  
   
  Top

16 楼laowei(reed)回复于 2001-04-19 21:27:00 得分 5

tr   -d   "\r"   <src   >dest  
  100分  
  Top

17 楼sarocky(自由的孤鹰)回复于 2001-04-20 12:57:00 得分 20

找不到   dtox,不知道是哪里的?  
  cat   file1   |   sed   s/\013$//   >   file2Top

18 楼devilhjf(慢慢的风)回复于 2001-04-20 17:01:00 得分 10

#!/usr/bin/perl   -w  
   
  open(FHD,"path/filename");  
   
  while(<FHD>){  
        s/\^M//;  
  }  
  close   FHD;Top

19 楼devilhjf(慢慢的风)回复于 2001-04-20 17:13:00 得分 0

可能有点小错误!但大致如此!Top

20 楼laowei(reed)回复于 2001-04-20 21:48:00 得分 5

tr   -d   "\015"   <A   >B  
  or  
  strings   A>B  
  给分吧Top

21 楼cloudred(?)回复于 2001-04-20 22:56:00 得分 0

对不起,给分稍晚了!Top

相关问题

  • c#中回车换行符是什么?
  • 急!高分送上,在C#中换行符的问题:
  • 我想问一下,在unix下,写c程序时的换行符怎么用
  • c语言中怎样知道文件中的换行符是<cr>还是<crlf>
  • C#.net web开发中如何判断字段串中的回车换行符
  • 使用Xerces C++(xml),怎样输出一个回车换行符呢?
  • 关于换行符
  • reporting services 换行符
  • 在c++builder中怎么定义一个回车换行符号呢(要在整个应用程序中用)?
  • 如何定义换行符???

关键词

  • unix
  • 文件
  • perl
  • null
  • dtox
  • fw
  • argv
  • fr
  • 程序
  • fopen

得分解答快速导航

  • 帖主:cloudred
  • 007sampras
  • waq
  • Daiver
  • Azz1
  • hem
  • bomb_hero
  • penguincn
  • laowei
  • sarocky
  • devilhjf
  • laowei

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
x 提问