このキーバインディングを使用して、末尾とヘッダーの空白なしで文字列を抽出しようとしています。
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の使用に慣れています。ただし、追加の\s
OPの元の正規表現はGNU sedに有効なBREです。