두 파일의 콘텐츠 리디렉션 [중복]

두 파일의 콘텐츠 리디렉션 [중복]

두 파일의 내용을 ooo.txt.

grep또한 두 번째 파일의 일부 특정 줄 (이 경우 처음 5줄과 마지막 25줄) 만 사용하고 싶습니다.'ㅋ') 괄호 없음

이것은 내가 사용하는 명령입니다:

cat [file1] &&  cat [file2] | grep  "lol" -B 5 -A 25 > ooo.txt

file 2불행하게도 파일에는 내용만 기록됩니다 ooo.txt(그러나 grep명령은 준수됩니다).

이 문제를 어떻게 해결할 수 있나요?

답변1

이러한 명령은 설계된 대로 정확하게 작동합니다.

첫 번째:

cat [file1]

출력을 file1으로 보냅니다 stdout.

다음:

&&

이전 콘텐츠가 실행한 종료 상태라면 다음 콘텐츠를 실행하라고 지시합니다 0.

마침내,

cat [file2] | grep  "lol" -B 5 -A 25 > ooo.txt

out as to를 사용한 stdout다음 해당 출력을 ooo.txt 파일로 리디렉션하는 데 사용합니다.cat [file2]stdingrep "lol" -B 5 -A 25> ooo.txt

원하는 것을 얻을 수 있는 몇 가지 방법은 다음과 같습니다.

첫 번째 명령은 첫 번째 cat명령에 리디렉션을 추가하고 거기서부터 시작됩니다. 파일이 존재하지 않거나 비어 있다고 가정합니다.

cat [file1] > ooo.txt &&  cat [file2] | grep  "lol" -B 5 -A 25 >> ooo.txt

파일이 이미 존재하고 비어 있지 않은 경우 다음을 추가하기만 하면 됩니다.

cat [file1] >> ooo.txt &&  cat [file2] | grep  "lol" -B 5 -A 25 >> ooo.txt

덜 복잡한 명령도 작동합니다.

{ cat [file1]; cat [file2] | grep  "lol" -B 5 -A 25; } > ooo.txt

;두 명령 cat사이와 grep뒤의 중괄호는 모든 명령의 출력을 파일로 리디렉션합니다 ooo.txt. 콘텐츠가 파일에만 추가되는 경우 >>대신 사용하세요.>

답변2

원하는 대로 작동해야 합니다.

cat [파일 1] <(cat [파일 2] | grep "lol" -B 5 -A 25) > ooo.txt

관련 정보