在Unix中从文件中删除所有回车\r的最简单方法是什么?
当前回答
如果你是一个Vi用户,你可以打开文件并删除回车符:
:%s/\r//g
或与
:1,$ s/^M//
请注意,您应该通过按ctrl-v和ctrl-m键入^M。
其他回答
我用的是python,这是我的代码;
end1='/home/.../file1.txt'
end2='/home/.../file2.txt'
with open(end1, "rb") as inf:
with open(end2, "w") as fixed:
for line in inf:
line = line.replace("\n", "")
line = line.replace("\r", "")
fixed.write(line)
尝试将DOS文件转换为Unix文件:
fromdos file
这又是一个解决方案……因为总还有一个问题:
perl -i -pe 's/\r//' filename
它很好,因为它可以在我使用过的所有unix/linux版本中工作。
如果你是一个Vi用户,你可以打开文件并删除回车符:
:%s/\r//g
或与
:1,$ s/^M//
请注意,您应该通过按ctrl-v和ctrl-m键入^M。
在我看来,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。
推荐文章
- 如何生成一个核心转储在Linux上的分段错误?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 使用sh shell比较字符串
- 只列出UNIX中的目录
- 如何限制从grep返回的结果的数量?
- 如何管道列表的文件返回的找到命令到猫查看所有文件
- 以相对于当前目录的路径递归地在Linux CLI中列出文件
- 如何使用xargs复制名称中有空格和引号的文件?
- 在makefile中抑制命令调用的回声?
- Shell脚本for循环语法
- read()和recv(), send()和write()之间有什么区别?
- 如何将多行输出连接到一行?
- 在Unix中删除回车
- 如何在vi文本编辑器中获得文件的sudo访问权限?
- 查找名称包含字符串的所有文件