私はMac OS 10.9を実行しており、Text to Speech
ショートカットを使用してすべてのアプリケーションで選択したテキストを読み取る機能を使用しています。私はこの機能を使ってプレビュー(AppleのPDFビューア)からPDF文書を読み上げます。
問題は、選択したテキストにハイフンハイフンがあることが多いことです。その結果、Text to Speech
関数はテキストを正しく読み取ることができません。
例:
質問:
クリップボードのテキストからハイフンを削除する短いbashシェルスクリプトを書くことはできますか?また、ショートカットを割り当ててスクリプト出力を「テキストスピーチ」機能に送信できるように、自動化プログラムを使用します。
編集する:(Goldilocksのコメントに対する回答)Automatorを使用すると、選択したテキストをクリップボードにコピーし、シェルスクリプト、テキスト読み取り機能をコピーできます。下記をご覧ください。
2番目の編集:実際にこれを達成するためのよりきれいな方法があるかもしれません。
「入力転送」オプションの下に「パラメータとして」オプションがあります。これが最初の図で「クリップボードにコピー」作業をスキップできることを意味するかどうかはわかりませんが、念のため言及する必要があると思いました。
ベストアンサー1
Linuxでは、以下が機能します。
xsel | sed ':rep /-$/ {N; s/-\n//; b rep}' | xsel -i
OSXではほとんど推測です(sed
スクリプトは正しく機能しますが)。pbcopy
使用する命令のようです。 OSXに選択バッファがあり、デフォルトでpbcopy
使用できると仮定すると、次のように動作できます。
pbpaste | sed ':rep /-$/ {N; s/-\n//; b rep}' | pbcopy
見ているオンラインマニュアルページ、利用可能な「ペーストボード」がたくさんあるようです。
-pboard {general | ruler | find | font}
specifies which pasteboard to copy to or paste from. If no pasteboard is
given, the general pasteboard will be used by default.
私は何をしたいのかわからず、もはや文書を見ることができません(あまり深く見ていませんが)。あなたはそれを試して、pbpaste -pboard xxx
何が起こるのかを見ることができます。おそらく、1つは強調表示されたテキスト用、もう1つはCmd-Cを使用してコピーされたテキスト用です。アクションオプションが与えられたら、それpbpaste
をに追加するだけですpbcopy
。
間違っている可能性があるもう1つの問題は、pbcopy
同じ一時ボードを同時に読み書きすることに問題があることです。最も簡単な解決策はsponge
。それは一部ですその他のユーティリティ。今回もLinux中心:
pbpaste | sed ':rep /-$/ {N; s/-\n//; b rep}' | sponge | pbcopy
それ以外の場合は変数を使用してください。
selection=$(pbpaste | sed ':rep /-$/ {N; s/-\n//; b rep}')
echo "$selection" | pbcopy
修正する
stdout
Automatorがシェルスクリプトを使用していると仮定すると、このto stdin
オプションを選択するだけです(スクリプトにパイピングするとデータが到着する場所です)。シェルスクリプトは簡単です:
#!/bin/sh
sed ':rep /-$/ {N; s/-\n//; b rep}'