![공정교체된 이 티셔츠는 왜 첫 번째 라인과 선택된 라인을 생산하지 못하는 걸까요? [복사]](https://linux55.com/image/35177/%EA%B3%B5%EC%A0%95%EA%B5%90%EC%B2%B4%EB%90%9C%20%EC%9D%B4%20%ED%8B%B0%EC%85%94%EC%B8%A0%EB%8A%94%20%EC%99%9C%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EB%9D%BC%EC%9D%B8%EA%B3%BC%20%EC%84%A0%ED%83%9D%EB%90%9C%20%EB%9D%BC%EC%9D%B8%EC%9D%84%20%EC%83%9D%EC%82%B0%ED%95%98%EC%A7%80%20%EB%AA%BB%ED%95%98%EB%8A%94%20%EA%B1%B8%EA%B9%8C%EC%9A%94%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
내가 원하는 것은 출력(헤더)의 첫 번째 줄 ps aux
과 grep 결과를 인쇄하는 것입니다.
검색한 결과 다음과 같은 결론을 얻었습니다.
ps aux | tee >(head -1 > /dev/tty) | grep mongo
grep mongo
하지만 stdin이 끊어진 것을 발견했습니다 .
또한 생략하면 > /dev/tty
직접 표준 출력은 어떻게 되나요 head -1
? 콘솔은 왜 안되나요?
(예, 나는 명령을 사용하여 원하는 것을 얻을 수 있다는 것을 알고 있습니다 awk
. 왜 내 명령이 작동하지 않는지 궁금합니다.)
답변1
이를 사용하여 awk
두 가지를 동시에 일치시킬 수 있습니다.
- 첫번째 줄.
- "mongo"가 포함된 줄입니다.
그게 다야:
$ ps aux | awk 'NR == 1 || /mongo/ {print $0}'
- 조건이
NR == 1
첫 번째 행과 일치합니다. - 조건은
/mongo/
"mongo"가 포함된 행과 일치합니다. {print $0}
는 처음 두 조건과 관련된 작업입니다. 이 경우 전체 라인을 인쇄합니다.