端末エコーによって出力が複雑にならず、grepなどのコマンドにコピーして貼り付けますか?

端末エコーによって出力が複雑にならず、grepなどのコマンドにコピーして貼り付けますか?

次のテスト出力があります。

PASS: tests/test_mutex_rmw
PASS: tests/test_mutex_trylock
PASS: tests/test_malloc_irreg
FAIL: tests/ARMCI_PutS_latency
FAIL: tests/ARMCI_AccS_latency
PASS: tests/test_groups
PASS: tests/test_group_split
PASS: tests/test_malloc_group
FAIL: tests/test_accs
FAIL: tests/test_accs_dla

出力をフィルタリングして失敗のみを確認したいです。画面からテキストをコピーしてstdinに貼り付けてgrepに渡すと便利です。例:

grep FAIL

テキストをコピーするには、Shift-Ctrl-V(またはマウスの中央ボタン)を使用します。

私が見たいのはすべてです。

FAIL: tests/ARMCI_PutS_latency
FAIL: tests/ARMCI_AccS_latency
FAIL: tests/test_accs
FAIL: tests/test_accs_dla

ただし、代わりに貼り付けた入力が画面に表示され、バッファリングによって入力が最終出力と混在します。

$ grep FAIL
PASS: tests/test_mutex_rmw
PASS: tests/test_mutex_trylock
PASS: tests/test_malloc_irreg
FAIL: tests/ARMCI_PutS_latency
FAIL: tests/ARMCI_AccS_latency
PASS: tests/test_groups
PASS: tests/test_group_split
PASS: tests/test_malloc_group
FAIL: teFAIL: tests/ARMCI_PutS_latency
sts/test_accs
FAIL: tests/test_accs_dla
FAIL: tests/ARMCI_AccS_latency
FAIL: tests/test_accs
FAIL: tests/test_accs_dla

入力を最初にcatに送ってからgrepに渡すのは合理的ですが、cat | grep FAIL実際には役に立ちません。バッファの混合が引き続き発生します。

もちろん、grepに渡されたファイルにデータを入れればきちんとフィルタリングが可能です。しかし、私が探しているのは、クリップボードバッファを介してターミナル出力からコピーされたテキストを簡単にフィルタリングするのに便利なツールです。これを行う最良の方法は何ですか?

同様に、画面にエコーされずに(データをコマンドの標準入力として自動的に提供する)、貼り付けを実行するにはどうすればよいですか?

1つの方法は、エコーを明示的にオフにすることです。

stty -echo; grep FAIL; stty echo

これはうまくいきますが、sttyを切り替えることなくこれを行う方法があると思います。他のシェルベースの方法を知っていますか?

私は(Debian GNU / Linuxでは)bashを使用していますが、POSIXシェルソリューションも興味深いです。

ベストアンサー1

マウスでテキストを表示したら、次を使用しますxclip

xclip -o | grep FAIL

またはクリップボードからコピー(Ctrl-c):

xclip -selection clipboard -o | grep FAIL

または:

xclip -sel c -o | grep FAIL

要するに。

おすすめ記事