tmux コピーモードで文字列を切り取ります。

tmux コピーモードで文字列を切り取ります。

このキーバインディングを使用して、末尾とヘッダーの空白なしで文字列を抽出しようとしています。

bind-key -T copy-mode-vi z send-keys -X \
copy-pipe 'sed "s/^[[:blank:]]\+//;s/[[:blank:]]\+$//" | xsel -ib' 

ただし、機能せずにxsel -ob空白を含む文字列を出力します。 GUIアプリケーションのCtrl + Vにも同様に適用されます。なぜ?必要な機能をどのように取得できますか?

tmux 2.6, set-clipboard off

編集する:sed式をテストしましたが、うまくいきます。

igor@igor-ideapad:~$ echo "   hello world    " | sed "s/^[[:blank:]]\+//;s/[[:blank:]]\+$//"
hello world

ベストアンサー1

sed -E最初の+の前に追加\があり、文字クラスは拡張正規表現機能であるため(BSD sedの場合)または(GNU sedの場合)を使用する必要がありますsed -r。なぜこの仕事をしようとするのかは分からないが[[:blank:]\sそんな必要はないようです。

コマンドラインで sed を使用して正規表現をテストできます。

printf ' abc '|sed -E "s/^[[:blank:]]+//;s/[[:blank:]]+$//"|wc -c
       3

編集:私は実際にEREとBSD sedの使用に慣れています。ただし、追加の\sOPの元の正規表現はGNU sedに有効なBREです。

おすすめ記事