在Unix中从文件中删除所有回车\r的最简单方法是什么?
当前回答
尝试将DOS文件转换为Unix文件:
fromdos file
其他回答
尝试将DOS文件转换为Unix文件:
fromdos file
我制作了这个shell脚本来删除\r字符。它适用于solaris和red-hat:
#!/bin/ksh
LOCALPATH=/Any_PATH
for File in `ls ${LOCALPATH}`
do
ARCACT=${LOCALPATH}/${File}
od -bc ${ARCACT}|sed -n 'p;n'|sed 's/015/012/g'|awk '{$1=""; print $0}'|sed 's/ /\\/g'|awk '{printf $0;}'>${ARCACT}.TMP
printf "`cat ${ARCACT}.TMP`"|sed '/^$/d'>${ARCACT}
rm ${ARCACT}.TMP
done
exit 0
tr -d '\r' < infile > outfile
看到tr (1)
在我看来,Linux上最简单的方法是,
sed -i.bak 's/\r$//g' <filename>
-i将编辑文件,而.bak将创建原始文件的备份,复制您的文件并在末尾添加扩展名.bak。(你可以在-i后面指定任何你想要的,或者只指定-i来不创建备份。)
替换操作符's/\r//'周围的强引号是必不可少的。如果没有它们,shell将把\r解释为转义+r,并将其简化为纯r,并删除所有小写r。这就是为什么Rob在2009年给出的答案不起作用。
添加/g修饰符可以确保即使是多个\r也会被删除,而不仅仅是第一个\r。
有人推荐dos2unix,我也强烈推荐。我只是提供更多的细节。
如果已安装,请跳转到下一步。如果还没有安装,我建议通过yum安装:
yum install dos2unix
然后你可以这样使用它:
dos2unix fileIWantToRemoveWindowsReturnsFrom.txt
推荐文章
- 如何从命令行通过mysql运行一个查询?
- 在创建守护进程时执行双fork的原因是什么?
- 对以制表符分隔的文件进行排序
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 在Bash中获取日期(比当前时间早一天)
- Linux: kill后台任务
- 在OSX中永久设置PATH环境变量
- 如何在C程序中获取当前目录?
- 如何在Bash中逐行合并两个文件
- 如何从远程SSH会话发送数据到本地剪贴板
- 我如何得到bash完成工作与别名?
- SSH端口转发~/。ssh /配置文件?
- 查找和替换-添加回车符或换行符
- 如何将多个文件的内容追加到一个文件