(私の質問についてコメントするほど評判は高くありません。両方のプログラムのstdout出力を並べて表示する方法)
これを試しましたが、paste <(jcal) <(ccal)
出力はめちゃくちゃです。
jcal; ccal;
並んでいない正しい出力を提供します。
Tir 1402
Sh Ye Do Se Ch Pa Jo
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
July 2023
Su Mo Tu We Th Fr Sa
1
2 3 4< 5> 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
実際の出力には色があり、jcal
日付の色が異なります。
ただし、使用するとpaste <(jcal) <(ccal)
色が削除され、両方の出力が混在します。
Tir 1402
Sh Ye Do Se Ch Pa Jo July 2023
1 2 Su Mo Tu We Th Fr Sa
3 4 5 6 7 8 9 1
10 11 12 13 14 15 16 2 3 4< 5> 6 7 8
17 18 19 20 21 22 23 9 10 11 12 13 14 15
24 25 26 27 28 29 30 16 17 18 19 20 21 22
31 23 24 25 26 27 28 29
30 31
jcal
同時に表示して出力するより良い方法はありますか?ccal
次のように、適切な色を使用します。
Tir 1402 July 2023
Sh Ye Do Se Ch Pa Jo Su Mo Tu We Th Fr Sa
1 2 1
3 4 5 6 7 8 9 2 3 4< 5> 6 7 8
10 11 12 13 14 15 16 9 10 11 12 13 14 15
17 18 19 20 21 22 23 16 17 18 19 20 21 22
24 25 26 27 28 29 30 23 24 25 26 27 28 29
31 30 31
ベストアンサー1
出力の最初の行を削除するだけですccal
。
$ paste <(jcal) <(ccal|tail -n+2)
Tir 1402 July 2023
Sh Ye Do Se Ch Pa Jo Mo Tu We Th Fr Sa Su
1 2 1 2
3 4 5 6 7 8 9 3 4< 5> 6 7 8 9
10 11 12 13 14 15 16 10 11 12 13 14 15 16
17 18 19 20 21 22 23 17 18 19 20 21 22 23
24 25 26 27 28 29 30 24 25 26 27 28 29 30
31 31
ccal
stdoutがttyに行くときだけ色で出力されるように見えます(explicitを使用しても--use-color
)、各行の終わりに色をデフォルト値に戻すことはありません(一部の端末で迷惑なアーティファクトが発生します)。次の方法を使用して両方の問題を解決できます。
paste <(jcal) <(socat -u exec:ccal,pty exec:'tail -n+2') |
sed $'s/$/\e[m/'
socat
パイプの代わりに擬似ターミナルデバイス(pty)を使用してccal
データを転送し、各行の最後にSGR0エスケープシーケンスを追加して、グラフィックレンダリングプロパティをデフォルト値にリセットします。tail
sed
<ESC>[m