標準入力でファイル名を指定したファイルの内容を出力するコマンド

標準入力でファイル名を指定したファイルの内容を出力するコマンド

実際には、完全な出力データを含むファイル名であるいくつかの出力部分を生成するコマンドがあります。一般的に使用するファイル名を抽出し、別のcutプログラムに渡したいと思います。たとえば、catファイルの内容が表示されます。

実行中の実際のコマンドを共有することはできませんが、再現性のために次のよう./my-command argsに置き換えることができます。echo 1:2:3:4:file.txt

だから、次のことを試しました。

./my-command args | cut -d : -f 5 | cat

catただし、これは引数なしで呼び出されたときにstdin(私のファイル名を含む)の内容をstdoutにコピーするため、ファイル名のみを印刷します。

catこれで、コマンドフローを逆にし、サブシェルを介して引数を渡すことでBashの問題を解決できることがわかりました。

cat `./my-command args | cut -d : -f 5`

これはファイルの内容を印刷しますが、呼び出しに簡単なコマンドを追加して基本コマンドの出力を単純にパイプできないため、特にユーザーフレンドリーではありません。

cat標準入力からファイル名を取得して内容を印刷する同様のプログラムはありますか?それともcatstdinをパラメータとして扱う方法はありますか?

ノート

私はstdinからファイル名を読み、cat私の環境で呼び出すbash関数を定義できることに気づきました。ただし、出力データを直接ダンプするこの手法はエンドユーザー文書に含める必要があり、単純なシェルに依存しないアプローチが非常に好まれます。

ベストアンサー1

さらに調査を行った後、私はこれがまさに真実であることに気づきました。xargsのために設計:

./my-command args | cut -d : -f 5 | xargs cat

これは、stdinの出力をcat実際のファイル名の呼び出しに変換してファイルの内容を印刷します。

おすすめ記事