파이핑 출력에 관한 UNIX 작업 질문과 관련하여 무엇을 요구하는지 이해가 되지 않습니다. [폐쇄]

파이핑 출력에 관한 UNIX 작업 질문과 관련하여 무엇을 요구하는지 이해가 되지 않습니다. [폐쇄]

xxx기본적으로 파일의 내용을 프로그램으로 보낸 yyy다음 출력을 다른 프로그램의 입력으로 파이프하여 zzz출력이 파일에 추가되는 명령을 생각해 내야 합니다 xyz.

답변1

항상 일을 가장 간단한 단계로 나누고 합치려고 노력하십시오. 첫 번째 부분을 시작하기 위해 직접 샘플 파일을 작성하겠습니다.

$ echo -e "line 1 ABA\nline 2 ABB\nline 3 CCC\n" > xxx
$ cat xxx 
line 1 ABA
line 2 ABB
line 3 CCC

이제 파일이 생겼습니다 xxx. 이제 우리는 프로그램으로 작동할 수 있는 것을 사용해야 합니다 yyy. Unix에는 많은 대체 명령이 있으므로 grep이제 하나를 선택하겠습니다. Grep은 우리가 찾으라고 지시한 문자열을 찾을 것이므로 "AB"가 포함된 문자열을 찾도록 지시해 봅시다.

$ cat xxx | grep AB
line 1 ABA
line 2 ABB

그래서 우리는 처음 두 가지 요구 사항을 충족했습니다.

  • cat xxx파일의 내용을 보냅니다 xxx.
  • cat xxx | grep AB프로그램에 콘텐츠를 보냅니다 yyy.

따라서 다음 지점인 "다른 프로그램의 입력으로 출력을 파이프하는 것 zzz"은 와 같은 명령으로 수행하는 작업과 더 유사하므로 상당히 간단해야 합니다 grep. 그럼 grep다음과 같은 다른 것을 사용해 봅시다 :

$ cat xxx | grep AB | grep BB
line 2 ABB

좋아요, 거의 다 왔어요. 방금 세 번째 요구 사항을 완료했습니다.

  • cat xxx | grep AB | grep BB출력을 grep AB입력으로 가져와 자체 출력을 생성합니다.

따라서 마지막 요점은 추가 출력이 필요하다는 zzz것입니다 grep BB. 그것은 간단합니다. 초기 파일이 어떻게 구성되었는지 알 수 있다면 명령의 출력을 가져와서 파일에 덤프하는 xxx파일 리디렉션을 사용했습니다 . >리디렉터는 파일 >이 이미 존재하더라도 콘텐츠로 파일을 덮어씁니다. 하지만 추가해야 합니다. 다행히도 다른 리디렉터인 를 사용할 수 있습니다 >>. 이렇게 하면 명령 출력이 기존 파일에 추가됩니다.

이미 존재하는 파일에 대해 말하자면, 파일을 빌드해야 합니다 xyz. 그럼 echo아까 만들었던 방법을 사용해 볼까요 xxx?

$ echo -e "previous line 1\nprevious line 2" > xyz
$ cat xyz 
previous line 1
previous line 2

이제 우리가 작성하고 있는 명령의 출력을 첨부해 보겠습니다.

$ cat xxx | grep AB | grep BB >> xyz

결과를 확인할 수 있습니다.

$ cat xyz 
previous line 1
previous line 2
line 2 ABB

이제 끝났습니다.

관련 정보