开发者

Using DOS file contents as command line arguments in BASH

This is a follow-up to this question's answer.

How can I modify the code so that the annoying CRLF of a DOS created file can be stripped away before being passed to xargs?

Example file '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

The unix variant of the file works with this:

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

For my own education, how can I change it to accept either the 'arglist.unix' or 'arglist.dos' files on the same command line?


cat arglist.dos | tr -d "\r" | xargs -n2 echo cp

gives you the same result as

cat arglist.unix | tr -d "\r" | xargs -n2 echo cp

so it works on both files.

tr -d "\r" removes all the CR characters


Use d2u to remove the CR before passing the file to xargs.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜