Ascii

組合多個命令,如 tr、iconv 和 dd

  • August 4, 2021

shell 腳本的新手,我很少有這樣的命令。擁有這樣的臨時文件是最佳選擇還是應該嘗試組合所有這些命令?如果是後者,您能幫我將輸出從 dd 命令重定向到 tr 命令,然後再重定向到 iconv。謝謝。

dd if=abcd.dat cbs=38 conv=block of=abcd.temp

貓 abcd.temp | tr -d “\n” | tr -d “\r” > abcd.輸出

iconv -f ASCII -t EBCDIC-US <abcd.output > abcd.ebcdic

您可以通過使用管道來避免各種中間文件,就像tr在現有命令中一樣。dd的預設輸出(如果of未指定)可以重定向:

dd if=abcd.dat cbs=38 conv=block | tr -d "\n" | tr -d "\r" | iconv -f ASCII -t EBCDIC-US &gt; abcd.ebcdic

這兩個tr命令可以組合:

dd if=abcd.dat cbs=38 conv=block | tr -d "\n\r" | iconv -f ASCII -t EBCDIC-US &gt; abcd.ebcdic

通常,避免臨時文件通常更快,因為管道輸出到第二個程序可以允許兩個程序重疊處理。

但是,如果腳本使用臨時文件更具可讀性,那麼它應該是完全可以接受的(假設腳本在完成這些文件後會刪除它們)。

我傾向於將其dd視為例外,因為它能夠以錯誤的參數造成如此巨大的破壞。我會盡量避免在腳本中使用它。

很高興看到好的舊 EBCDIC 仍在使用!

引用自:https://unix.stackexchange.com/questions/663327