我最近从 Linux 回到了 Windows。我有一些带有 CRLF 的文件,一些带有 LF,一些是混合的。有没有一个实用程序可以帮助我找到我所有的 Unix-touched 文件并将它们转换为正确的 CRLF 终止文件?
该实用程序必须在 Windows 上运行,而不是在 Linux 上运行。我已经搬走了。如果可以避免的话,我宁愿不安装Cygwin。
当我通过管道传输多个 unix 命令(例如 grep、sed、tr 等)时。我倾向于指定正在使用 cat 处理的输入文件。所以像cat file | grep ... | awk ... | sed ....
但是最近在我的答案留下了一些评论表明这是 cat 的无用用法之后,我想我会在这里问这个问题。
我查了一下这个问题,看到了维基百科关于 UUOC和The Useless Use of Cat Award的文章,在我看来,提出的论点是从效率的角度来看的。
我在这里遇到的最接近的问题是这个:打电话给猫是浪费吗?——但这不是我要问的。
我猜 UUOC 阵营建议使用什么,cmd1 args < file | cmd2 args | cmd3 ..或者如果该命令具有从文件读取的选项,然后将文件作为参数传入。
但对我来说cat file | cmd1 ... | cmd2似乎更容易阅读和理解。我不必记住将输入文件发送到不同命令的不同方式,并且该过程逻辑上从左到右流动。首先输入,然后是第一个过程……依此类推。
我是否无法理解关于 cat 的无用使用的争论?我知道如果我正在运行一个每 2 秒运行一次并进行大量处理的 cron 作业,那么在这种情况下 cat 可能会很浪费。但除此之外,使用 cat 的普遍共识是什么?
可能的重复:
在 Linux 上将 CRLF 转换为换行符
我有几个脚本/bin/sh^M bad interpreter在运行时会产生错误消息。我相信这是因为它们被格式化为 Windows/DOS 行终止,而不是 Unix/Linux 预期的行终止(在我的情况下,嵌入式系统为 Ubuntu 9.04)。
有没有一种简单的方法可以在 Linux 环境中将文本文件从 Windows/DOS 格式转换为 Unix 格式?
我正在使用 Fedora。当我发出:
-bash-3.2$ source na-profile.conf
Run Code Online (Sandbox Code Playgroud)
我得到:
: command not found
: command not found
: command not found
Run Code Online (Sandbox Code Playgroud)
na-profile.conf 文件如下所示:
KEYTAB=server02 export KEYTAB;
ORACLE_HOME=/home/oracle/app/xxxx/11.2.0.1/yyyyy; export ORACLE_HOME;
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN;
PATH=$PATH:$ORACLE_HOME/bin
Run Code Online (Sandbox Code Playgroud)
文件中没有多余的行或空格。
可能的重复:
在 Linux 上将 CRLF 转换为换行符
如何将 DOS 文本文件转换为 Unix 文本文件,以便正确使用 Linux 解析器?
linux ×4
unix ×2
windows ×2
bash ×1
cat ×1
command-line ×1
conversion ×1
fedora ×1
ms-dos ×1
newlines ×1
pipe ×1
text-editing ×1