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
이제 끝났습니다.