シェルスクリプトに初めて触れる人には、このようなコマンドはほとんどありません。このような一時ファイルを持つことが最善の選択ですか、それともこれらのコマンドをすべて組み合わせる必要がありますか?後者の場合、ddコマンドの出力をtrコマンドにリダイレクトしてから、iconvにリダイレクトするのに役立ちますか?ありがとうございます。
dd if=abcd.dat cbs=38 遷移=ブロック=abcd.temp
猫abcd.temp | tr -d "\n" | tr -d "\r" > abcd.output
iconv -f ASCII -t EBCDIC-US <abcd.output> abcd.ebcdic
答え1
tr
従来のコマンドと同様に、パイプを使用してさまざまな中間ファイルを回避できます。dd
デフォルト出力(of
指定されていない場合)をリダイレクトできます。
dd if=abcd.dat cbs=38 conv=block | tr -d "\n" | tr -d "\r" | iconv -f ASCII -t EBCDIC-US > abcd.ebcdic
両方のtr
コマンドを組み合わせて使用できます。
dd if=abcd.dat cbs=38 conv=block | tr -d "\n\r" | iconv -f ASCII -t EBCDIC-US > abcd.ebcdic
答え2
通常、出力を2番目のプロセスにパイプすると、2つのプロセスが処理を重複する可能性があるため、一時ファイルを回避する方が一般的に高速です。
ただし、一時ファイルを使用すると、スクリプトを読みやすくすることができれば完全に許可されます(スクリプトが使用後にファイルを削除した場合)。
dd
私はこれを誤ったパラメータのためにあまりにも多くのダメージを与える可能性があるため、例外として見る傾向があります。私はそれをスクリプトで使用しないようにします。
既存のEBCDICがまだ使われているのを見て嬉しいです!