社区
系统维护与使用区
帖子详情
100分讨论在unix上用的去掉windows文件中的换行符(0x0D)的shell或c程序!
cloudred
2001-03-19 04:41:00
加精
问题描述:对于换行,window下用回车换行(0A0D)来表示,unix下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。
...全文
893
21
打赏
收藏
100分讨论在unix上用的去掉windows文件中的换行符(0x0D)的shell或c程序!
问题描述:对于换行,window下用回车换行(0A0D)来表示,unix下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M.请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sarocky
2001-04-20
打赏
举报
回复
找不到 dtox,不知道是哪里的?
cat file1 | sed s/\013$// > file2
cloudred
2001-04-20
打赏
举报
回复
对不起,给分稍晚了!
laowei
2001-04-20
打赏
举报
回复
tr -d "\015" <A >B
or
strings A>B
给分吧
devilhjf
2001-04-20
打赏
举报
回复
可能有点小错误!但大致如此!
devilhjf
2001-04-20
打赏
举报
回复
#!/usr/bin/perl -w
open(FHD,"path/filename");
while(<FHD>){
s/\^M//;
}
close FHD;
laowei
2001-04-19
打赏
举报
回复
tr -d "\r" <src >dest
100分
penguincn
2001-04-12
打赏
举报
回复
这个问题在unix 下不值得讨论,
因为在unix下有太多的工具可以解决它。
用 dtox
tr
awk
perl
vim 的查找替代功能
。。。
都可以搞掂!
penguincn
2001-04-12
打赏
举报
回复
这个问题在unix 下不值得讨论,
因为在unix下有太多的工具可以解决它。
用 dtox
tr
awk
perl
vim 的查找替代功能
。。。
都可以搞掂!
bomb_hero
2001-04-11
打赏
举报
回复
本来就有的啊
dtox filename > filename
hem
2001-04-11
打赏
举报
回复
/* 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/ 目录
Daiver
2001-04-10
打赏
举报
回复
用dtox命令就可以了!
dtox 111 >222
Azz1
2001-04-10
打赏
举报
回复
用awk最简单
awk -e'{
gsub($0,...) 好像是 gsub($0, "\015")
printf "%s\n", $0
}' infile > outfile
waq
2001-04-09
打赏
举报
回复
有注释的那一行尾少了 */ 号,加上吧
waq
2001-04-09
打赏
举报
回复
在线编了一个,希望有帮助,主要是理解意思,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);
}
cloudred
2001-03-23
打赏
举报
回复
007sampras: dtox filename就行?
cloudred
2001-03-23
打赏
举报
回复
有个在windows下用的win->unix的程序,可惜常常进入Unix看文件时,发现文件里有好多^M,不想再退回到windows转换后再退到unix里,退来退去就没兴致搞了!我是unix新手,也想学学unix下的c编程,对诸位高手来说,这个小程序5分钟都用不了吧!呵呵
007sampras
2001-03-23
打赏
举报
回复
# dtox filename
cloudred
2001-03-22
打赏
举报
回复
是呀,就这么简单。
我们头说了:“生活本来就是这么简单!”
Kevin_qing
2001-03-22
打赏
举报
回复
用strchr查找,在替换为space好了
jerrymi
2001-03-22
打赏
举报
回复
用二进制传送文件就没这个问题了
加载更多回复(1)
Windows
安装Git避坑指南:PATH、
换行符
与右键集成深度解析
Git是现代软件开发的基础设施级工具,其核心原理在于
分
布式版本控制模型与工作区/暂存区/仓库三态管理机制。在
Windows
平台,由于命令行环境碎片化、CRLF/LF
换行符
差异及注册表/
Shell
扩展等系统特性,Git安装远非简单点击‘下一步’——它实质是一次对PATH环境变量、
文件
系统策略和用户权限模型的精准配置。技术价值体现在保障跨平台协作一致性、支撑VS Code等IDE深度集成、并为CI/CD流水线提供可复现的基础环境。典型应用场景包括新手开发者环境初始化、企业批量部署、以及金融/政企等高合规要求场景
Git for
Windows
安装避坑指南:PATH、终端、
换行符
与编辑器四大关键配置
Git for
Windows
并非普通软件,而是基于 MSYS2 的 POSIX 兼容层与 Git 核心深度集成的开发环境。其安装过程实质是系统级配置决策:PATH 设置影响命令全局可用性与工具链冲突,终端模拟器(如 MinTTY)决定 UTF-8
中
文路径与 emoji 渲染可靠性,行尾转换(CRLF/LF)关系跨平台协作稳定性,而默认编辑器(如 Vim)则直接制约 commit message 规范性与团队协作效率。这些配置一旦出错,将引发 git status 乱码、git clone 失败、
文件
误
Unix
_Linux_AIX_常用命令总结
■前言
Unix
,Linux 介绍 https://blog.csdn.net/sxzlc/article/details/103652857(介绍内容在文章底部) ■各种命令 0.cd 目录跳转 1.uname uanme -a 显示服务器全部信息 uname -n 显示服务器名字 2.ifconfig ifconfig -a 查看网络配置 3.who 显示当前在线用户 4.chown ch...............
Windows
安装Git避坑指南:PATH、
换行符
与凭据管理全解析
Git 是
分
布式版本控制系统的标准实现,其核心能力依赖于命令行环境、跨平台兼容性与安全凭据机制。在
Windows
系统
中
,由于缺乏原生
Unix
工具链和统一的环境变量管理规范,Git 的可用性高度依赖 PATH 配置、core.autocrlf
换行符
策略及 Git Credential Manager 集成。这些配置直接决定开发者能否在 CMD、Power
Shell
、VS Code 终端及 CI 流水线
中
稳定执行 git push、git clone 等关键操作。尤其当团队协作涉及 GitHub/Gi
跨平台开发必知:CRLF与LF
换行符
差异详解与实战解决方案
在计算机系统
中
,文本
文件
的行结束符是一个基础但关键的概念,它定义了如何标记一行的结束。其原理源于早期电传打字机的两个独立机械操作——回车(Carriage Return, CR)和换行(Line Feed, LF)。不同的操作系统对此做出了不同的技术选择:
Unix
/Linux/macOS采用单一的LF(\n),而
Windows
则沿用了CRLF(\r\n)的组合。这一字节层面的差异,在跨平台协作
中
具有重要的技术价值,它直接影响到代码的可移植性、版本控制的清晰度以及脚本执行的正确性。在应用场景上,无论是通过Gi
系统维护与使用区
19,614
社区成员
74,557
社区内容
发帖
与我相关
我的任务
系统维护与使用区
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
复制链接
扫一扫
分享
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章