Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash IO重定向-具有特殊文件名\r\n_Bash_Redirect_Awk_Io - Fatal编程技术网

Bash IO重定向-具有特殊文件名\r\n

Bash IO重定向-具有特殊文件名\r\n,bash,redirect,awk,io,Bash,Redirect,Awk,Io,我正在从一个大文件中提取一些信息,并将输出定向到另一个文件,如下所示 awk '{if ($1=="Multiple"); print $3}' file_01.txt > results.txt 当我将上述行放入files.sh并使用bash命令执行它时,奇怪的是,我发现结果文件名不是results.txt,而是results.txt\r\n 是否可以从文件名中删除尾随的\r\n 当我在终端中测试awk行时,我得到了正确的文件名,没有回车符和换行符 在echo命令中,有选项-n可解决此

我正在从一个大文件中提取一些信息,并将输出定向到另一个文件,如下所示

awk '{if ($1=="Multiple"); print $3}' file_01.txt > results.txt
当我将上述行放入files.sh并使用bash命令执行它时,奇怪的是,我发现结果文件名不是
results.txt
,而是
results.txt\r\n

是否可以从文件名中删除尾随的
\r\n

当我在终端中测试awk行时,我得到了正确的文件名,没有回车符和换行符

echo
命令中,有选项
-n
可解决此问题,但无法找到awk的任何选项

希望你能帮我解释一下

p/s:由于我必须从许多大文件中提取信息,为了便于执行,我将所有awk命令堆叠在一个bash文件中

2014年3月26日更新

谢谢你的指导

  • 要确认文件\u 01.txt的内容确实有\r\n(回车和换行对),并且是从Windows计算机生成的。该文件随后被移植到Ubuntu 10.04进行进一步的后处理

  • 由于ubuntu10.04没有dos2unix,使用fromdos(tofrodos包),所以尝试了以下语法

  • fromdos文件\u 01.txt
    fromdos-d文件_01.txt
    fromdosfromdos_output.txt
    
    以上所有操作仍然生成带有\r\n的文件名,即
    results.txt\r\n

    文件的内容(带\r\n的行)会影响Ubuntu机器中的文件命名吗?

    我设法解决了这个问题。 我从DOS执行了
    bash文件,它不再生成带有
    \r\n
    的文件名。
    谢谢您的提示。

    您的
    文件\u 01.txt
    已返回。在运行
    awk
    之前,先通过
    dos2unix
    实用程序运行它。您是否有可能在Windows和*nix之间移动了文件?如果是这样,请使用
    dos2unix
    /
    unix2dos
    修复行分隔符差异您可以从unix ShellScriptsAypal、DigitalTrampar和Eugen的unix行结尾开始使用新实验的结果更新我的writeup。据说Ubuntu10.04中使用的DOS没有dos2unix。尤金,你的意思是想找个方法来代替你?
    fromdos file_01.txt
    fromdos -d file_01.txt
    fromdos < file_01.txt > fromdos_output.txt