이 키 바인딩을 사용하여 후행 및 헤더 공백 없이 문자열을 추출하려고 합니다.
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입니다.