替换dos2unix行结束符
我使用以下代码替换dos2unix行结尾。每次执行代码时,它都会卡在命令提示符下。下面的命令有什么问题替换dos2unix行结束符,unix,sed,awk,find,Unix,Sed,Awk,Find,我使用以下代码替换dos2unix行结尾。每次执行代码时,它都会卡在命令提示符下。下面的命令有什么问题 for i in `find . -type f \( -name "*.c" -o -name "*.h" \)`; do sed -i 's/\r//' $i ; done 我建议确认find命令和for循环工作正常 您只需使用echo语句打印每个文件的名称就可以做到这一点 根据您的平台(以及有多少.c和.h文件),您可能需要使用xargs,而不是直接操作find的输出。很难说,因
for i in `find . -type f \( -name "*.c" -o -name "*.h" \)`; do sed -i 's/\r//' $i ; done
我建议确认find命令和for循环工作正常 您只需使用echo语句打印每个文件的名称就可以做到这一点 根据您的平台(以及有多少.c和.h文件),您可能需要使用xargs,而不是直接操作find的输出。很难说,因为你还没有告诉我们你在哪个平台上 此外,根据您的平台,不同版本的sed使用-i选项的工作方式也不同 有时必须指定备份文件的文件扩展名,有时则不必指定 以上所有这些都是我建议逐个测试您的命令的原因 您应该阅读您试图在其系统上使用的每个命令的手册页 关于命令的sed部分,您应该在单个文件上测试它,以确保它正常工作 您可以使用以下sed命令修复换行:
sed的/^M$/'input.txt>output.txt
您可以通过键入CTRLv CTRLm来键入^M
正如我之前所说的,-I
选项在不同平台上的工作方式不同
如果您无法使其正常工作,您可以先输出一个新文件,然后再覆盖原始文件
这在for循环中非常简单。在Ubuntu中,
dos2unix
和unix2dos
分别实现为todos
和frodos
。它们可在软件包tofrodos
中找到
我建议使用
find . -type f \( -name "*.c" -o -name "*.h" \) -print0 | xargs -0 frodos
为什么不直接使用
dos2unix
命令呢?您在哪个平台上?根据答案,您可能想使用xargs…@jahroy-我在ubuntu上安装了dos2unix,但每次运行时都会显示“未找到dos2unix命令”,听起来您要么没有安装,要么安装不正确。@jahroy-这是一个打字错误……您能建议除dos2unix之外的其他方式吗