tr、inov、ddなどの複数のコマンドの組み合わせ

tr、inov、ddなどの複数のコマンドの組み合わせ

シェルスクリプトに初めて触れる人には、このようなコマンドはほとんどありません。このような一時ファイルを持つことが最善の選択ですか、それともこれらのコマンドをすべて組み合わせる必要がありますか?後者の場合、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がまだ使われているのを見て嬉しいです!

関連情報