在BASH中将DOS文件内容用作命令行参数

在BASH中将DOS文件内容用作命令行参数,bash,scripting,Bash,Scripting,这是对这一问题的后续行动 如何修改代码,以便在将DOS创建的文件传递给xargs之前,将其恼人的CRLF剥离掉 示例文件“arglist.dos” # cat > arglist.unix src/file1 dst/file1 src/file2 dst/file2 src/file3 dst/file3 ^c # sed 's/$/\r/' arglist.unix > arglist.dos 该文件的unix变体适用于以下情况: $ xargs -n2 < arglis

这是对这一问题的后续行动

如何修改代码,以便在将DOS创建的文件传递给xargs之前,将其恼人的CRLF剥离掉

示例文件“arglist.dos”

# cat > arglist.unix
src/file1 dst/file1
src/file2 dst/file2
src/file3 dst/file3
^c
# sed 's/$/\r/' arglist.unix > arglist.dos
该文件的unix变体适用于以下情况:

$ xargs -n2 < arglist.unix echo cp
cp src/file1 dst/file1
cp src/file2 dst/file2
cp src/file3 dst/file3
$xargs-n2

对于我自己的教育,如何将其更改为在同一命令行上接受“arglist.unix”或“arglist.dos”文件?

在将文件传递给xargs之前,使用d2u删除CR

cat arglist.dos | tr -d "\r" | xargs -n2 echo cp
提供与相同的结果

cat arglist.unix | tr -d "\r" | xargs -n2 echo cp
所以它对两个文件都有效


tr-d“\r”
删除所有CR字符

不同的名称;相同的功能。我更喜欢在同一个命令行上执行此操作,
d2u
/
dos2unix
是否支持此功能?与许多unix命令一样,当在没有参数的情况下调用时,dos2unix在stdin和stdout上运行。谢谢。我想我想要的是对