적은 줄에서 파일로 모든 줄을 쓰려면 어떻게합니까?


76

에 명령을 파이프 less했으며 이제 명령의 출력을 파일에 저장하려고합니다. 어떻게합니까?

이 경우 사용하고 싶지 않습니다 tee. 솔루션을 직접 사용 하지 않기 때문에 사용을 잊어 버린 경우 장기 실행 명령을 다시 실행할 필요가 없습니다 tee.

이 질문이 하나와 유사한, 유일한 차이점은 내가 라인이 아닌 부분 집합을 모두 저장할 것입니다 적은에서 파일에 줄을 쓰기

답변:


106

에서 입력 할 파일 이름을 less입력 s한 다음 입력하십시오 Enter.
로부터 man페이지에서 COMMANDS:

s filename
      Save the input to a file.  This only works if the input is a pipe, not an ordinary file.

man또한 특정 설치에 따라 s명령을 사용하지 못할 수도 있다고 페이지에 표시됩니다. 이 경우 다음을 사용하여 1 행으로 갈 수 있습니다.

g or < or ESC-<
      Go to line N in the file, default 1 (beginning of file).

전체 내용을 다음 cat과 함께 파이프하십시오 .

| <m> shell-command
      <m> represents any mark letter. Pipes a section of the input file to the
      given shell command. The section of the file to be piped is between the
      first line on the current screen and the position marked by the letter. 
      <m> may also be ^ or $ to indicate beginning or end of file respectively.

그래서 :

g|$cat > filename

또는:

<|$cat > filename

즉, 유형 g또는 <( g 거나 보다 작음 ) | $( 파이프달러 후) cat > filenameEnter.
이것은 입력이 파이프인지 일반 파일인지에 관계없이 작동합니다.


0

없이 수행하는 한 가지 방법 tee은 다음과 같습니다. 이미 존재하는 경우
less /path/to/input > /path/to/output
위의 내용을 덮어 씁니다 /path/to/output.

동일하지만 추가하는 방법 /path/to/output은 다음과 같습니다.
less /path/to/input >> /path/to/output

텍스트를 less연 후에 텍스트를 저장하려면 파일 저장 기능을 사용할 수 있습니다.
에있을 less때을 누릅니다 s. 그런 다음 파일 이름을 입력하십시오.
파이프를 사용한 경우 파일이 자동으로 Working Directory에 작성됩니다.
파이프를 사용하지 않은 경우 텍스트를 저장할 수있는 파일이 열립니다.
파일이에서 열릴 것으로 생각합니다 vim.


4
less이미 열었을 때 부터 솔루션을 원합니다 less.
Flimm

내가 참조. 오해해서 죄송합니다. 내 답변을 업데이트했습니다.
nehcsivart

-2

적은 양을 사용하지 않고 티를 사용한 다음 티를 줄입니다.

./program | tee program.out | less


5
문제에서, 나는 teeless번도 열지 않은 채로 효과가있는 솔루션을 구체적으로 요청했습니다 .
Flimm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.