標準出力を接続してテーブルに置き換える

標準出力を接続してテーブルに置き換える

私が持っているとしましょう:

$ cat tmp1.txt
a
b
c

それから

$ paste tmp1.txt <(tr '[:lower:]' '[:upper:]'<tmp1.txt)
a   A
b   B
c   C

上記の内容をどのように修正できますか?

1/tmp1.txt一度だけ電話しましたか? (おそらくtee

tmp1.txt2/端末からコンテンツを提供します(コマンド出力で生成されたかのように)。このためにこれを修正してみましたが、それほど遠くは行きませんでした。

$ cat<< 'EOF' | tee >(tr '[:lower:]' '[:upper:]')
a
b
c
EOF

出力:

a
b
c
A
B
C

ベストアンサー1

名前付きパイプを使用して、tee次の間のデータの追加チャネルを作成しますtr

$ mkfifo pipe
$ tee pipe <file | paste - <( tr '[:lower:]' '[:upper:]' <pipe )
a       A
b       B
c       C

または(あまり良いですが)tr左に移動するには、次の手順を実行します|

$ mkfifo pipe
$ tee >( tr '[:lower:]' '[:upper:]' >pipe ) <file | paste - pipe

tr変換するデータを提供するには、名前付きパイプが追加で必要ですpaste。このpasteユーティリティは、生データと変換データの2つのストリームを読み取る必要があります。そのうちの1つは標準ストリームであり、もう1つは上記のように元のファイル(ファイルを2番目に読み取る)または名前付きパイプからインポートする必要があります。

おすすめ記事