csearch 출력을 가져와서 색상을 지정하고 싶습니다. 다음과 같습니다.
/home/bp/whatever.txt:1:foo
이것은 작동합니다:
csearch -n -- $term \
| env GREP_COLORS='mt=02;35' grep --color=always -P '^[^:]+:[^:]+:' \
| grep -P --color=always -- $term \
| less -RFX
csearch
그러나 아무것도 표시하기 전에 전체 출력이 계산될 때까지 기다립니다.
이제 이렇게 하면:
csearch -n -- $term \
| env GREP_COLORS='mt=02;35' grep --color=always -P '^[^:]+:[^:]+:' \
| pv
| grep -P --color=always -- $term \
| less -RFX
...데이터가 흐르는 것을 볼 수 있지만 만약 그렇게 한다면:
csearch -n -- $term \
| env GREP_COLORS='mt=02;35' grep --color=always -P '^[^:]+:[^:]+:' \
| grep -P --color=always -- $term \
| pv
| less -RFX
...데이터 흐름이 없습니다. 두 번째는 grep
EOF를 기다리는 것 같습니다.
두 grep을 모두 추가해도 --line-buffered
나에게는 아무런 소용이 없는 것 같습니다.
이 명령 파이프라인이 EOF를 기다리는 이유는 무엇입니까?
답변1
를 사용하고 있습니다 fish
. 즉, 실제로는 을 사용하고 있지 않지만 다음 grep
과 같습니다.
function grep
command grep --color=auto $argv
end
grep
첫 번째 항목에서는 이미 래핑되어 env
함수를 무시하기 때문에 문제가 되지 않습니다 .
수정 grep
하려면 변경하세요 ./bin/grep