2009-11-20 55 views
0

這是此問題的後續操作answer使用DOS文件內容作爲BASH中的命令行參數

如何修改代碼,以便DOS文件的令人討厭的CRLF在傳遞給xargs之前可以被剝離?

示例文件'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 

對於我自己的教育,我能怎樣改變來接受「arglist.unix」或「arglist.dos」文件在同一個命令行上?

回答

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

給你同樣的結果

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

所以它適用於這兩個文件。

tr -d "\r"刪除所有CR字符

+0

謝謝。我想我以前是在原始命令行中理解了<<'運算符;你的例子讓我清楚,'xargs'是從'stdin'輸入你的兩個我的版本。 – Jamie 2009-11-23 14:41:58

1

在將文件傳遞給xargs之前,使用d2u刪除CR。

+0

在我的系統,這就是所謂的'dos2unix' – 2009-11-20 23:04:01

+0

不同的名稱;相同的功能。 – 2009-11-21 04:53:52

+0

我寧願在同一個命令行上執行它,'d2u' /'dos2unix'是否支持? – Jamie 2009-11-21 16:22:42

相關問題