일치하는 행을 더 적게 복사하는 방법은 무엇입니까?

일치하는 행을 더 적게 복사하는 방법은 무엇입니까?

마우스로 선택하기에는 너무 길어서 일치하는 줄을 Less로 복사하고 싶은데 Less에서 다른 방법이 있나요? 예를 들어

파일: test.txt 내용:

line1: 12312sdfas23414123
liie2: aaaaaxxxxxxxxxxxxxxxxxxxxxxxfsdfsdfasdf
sdfasdfasdfadsfasdfdfdfd........
line3: 134sdgas1212

먼저 "aaaaa"를 검색한 다음 해당 줄을 클립보드에 어떻게 복사합니까? 검색하다가 이걸 발견했어요https://stackoverflow.com/questions/26626910/copy-special-line-from-less, 하지만 내 요구 사항에 적용하는 방법을 모르겠습니다. 미리 감사드립니다

업데이트: 기본 메서드가 있나요? 내 Centos 6에 xclip 또는 pbcopy가 설치되어 있지 않다는 것을 알았기 때문입니다.

답변1

lessv편집기를 실행하고 파일 이름과 현재 줄 번호를 제공하는 명령이 있습니다 . 다음을 사용하여 실행되는 명령을 재정의할 수 있습니다.

export LESSEDIT='sed -n "%lp" %g | xclip -selection clipboard'

이제 를 입력하면 현재 파일(%g)의 현재 줄(%l)을 인쇄(p)하고 로 파이프하는 v데 사용됩니다 . 이 설정을 저장하고 실행하는 작은 셸 스크립트(예: )를 작성할 수 있습니다 .sedxclipmylessless

#!/bin/bash
export LESSEDIT='sed -n "%lp" %g | xclip -selection clipboard'
exec less "$@"

chmod +x myless실행 가능하게 만들고 PATH 디렉토리에 저장하는 것을 잊지 마십시오 .

답변2

보내주신 링크에 답변이 있지만 귀하가 찾으시는 정확한 순서를 포함해 드릴 수 있습니다.

이를 수행하는 명령은 다음 less과 같습니다.

  1. /aaaaax <enter>
  2. | <enter>
  3. head -1 | xclip -selection clipboard <enter>

이것이 이 명령이 말하는/실행입니다

  1. 페이지/화면 상단에 배치할 "aaaaax" 문자열을 검색하세요.
  2. "튜브" 마크. enter명확한 표시 없이 누르면 이 화면의 내용만 전송됩니다.
  3. head -1입력을 첫 번째 줄로만 자릅니다. 이 경우 우리는 라인을 원합니다
  4. xclip -selection clipboard이 줄을 시스템 클립보드에 넣고 어디든 붙여넣을 수 있습니다.

답변3

의존할 필요가 없다면 를 less사용하는 것이 좋습니다 grep.

필터링된 출력을 사용하여 grep문자열을 더 빠르게 찾을 수 있습니다.

관련 정보