파이프 filepath 을 ImageJ

0

질문

내가 조금 command line utility rjp2tif 추출 방사능 데이터를 jpeg 파일로 tiff 파일입니다. 나는 할 수 있도록 희망 관 파일 경로를 ImageJ 에서 명령행 ImageJ 열 tiff 파일입니다. 이를 위해, rjp2tif 쓰 filepath tiff 파일을 표준 출력됩니다. 나는 다음에 bash:

$ rjp2tif /path/to/rjpeg | open -a imagej

$ rjp2tif /path/to/rjpeg | open -a imagej -f

첫 번째 열 ImageJ 그러나지 않는 파일을 엽니다. 두 번째 열 ImageJ 텍스트 창 filepath 습니다.

이것은 맥 os 에서 몬테레이,하지만 나는 생각하지 않는 문제입니다. 사람이 작업을 수행하기 위해 시도하고 성공적이었다? TIA.

bash macos
2021-11-23 23:05:07
1

최고의 응답

1

rjp2tif 명령을 반환하는 파일 경로에 표준 출력,그리고 당신을 통과하려면 출력으로 정기적인 CLI 인수하는 다른 명령에,당신은 당신에 관심이 있을 수 있습니다 xargs 명령입니다. 하지만 주는 일반적인 경우에,당신은 수중 일부 문제는 경우 파일 경로 공백이 포함되거나 그렇:

읽기 공간,탭,newline 고 파일의 끝으로 구분 인수 기준에서 입력 및 실행 지정된 유틸리티로 그들과 함께 인수를 사용합니다.
인수하는 일반적으로 오래의 목록은 파일명(에 의해 생성 lsfind예를 들어)을 얻을 전달 xargs 를 통해 파이프입니다.

그래서 이 경우에는 가정하면,각각의 파일 경로를 단 한 번의 선(은 분명히 이 사건이 있는 경우에만 한 선반),사용할 수 있습니다 다음 NUL기반 팁에 의존 tr 명령입니다.

여기에는 명령어 당신을 얻을:

rjp2tif /path/to/rjpeg | tr '\n' '\0' | xargs -0 open -a imagej

참고:GNU/리눅스 OS,당신 수 있도록 확인하시기 바랍에서 작동 하지 않 macOS?

FTR,아래의 포괄적인 쉘 코드를 수 있을 테스트하는 두 개의 다른 모드 xargs:성 중 하나는 명령 당선 인수(-n1다),또는 하나의 명령으로 모든 라인에서 인수 한 이동:

$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 -n1 \
  bash -c 'printf "Run "; for a; do printf "\"$a\" "; done; echo' bash
Run "one " 
Run "two" 
Run "three and four" 

$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 \
  bash -c 'printf "Run "; for a; do printf "\"$a\" "; done; echo' bash
Run "one " "two" "three and four" 

######################################
# or alternatively (with no for loop):
######################################

$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 -n1 \
  bash -c 'printf "Run "; printf "\"%s\" " "$@"; echo' bash
Run "one " 
Run "two" 
Run "three and four" 

$ printf 'one \ntwo\nthree and four' | tr '\n' '\0' | xargs -0 \
  bash -c 'printf "Run "; printf "\"%s\" " "$@"; echo' bash
Run "one " "two" "three and four" 
2021-11-24 14:55:40

@ErickMD 예, tr 명령을 위에는 작업에 macOS,감사합니다. 내가 찾는 -t 옵션(trace)하기 xargs 은 도움이 무엇을 보여줍 xargs 지 않는 명령입니다. 는 경우에,여기 때 path/to/tiff 전달된 xargs 을 통해 파이프, xargs 명령을 다시 정렬 open -a imagej path/to/tiff. 매우 유용합니다.
Jim Merkel

@ErickMD 하나 추가적인 것은,당신은 위에서 언급되는 거기에 하나의 라인을 표준 출력 rjp2tif 는 파이프 xargs. 그러나 있을 수 있습 많은 라인을 표준 출력하는 경우 사용 -v 옵션 rjp2tif. 이 작업할 수 있습니다 또한 내가 사용하는 경우 tee /dev/tty 모두 표시 라인에서 화면 뒤에 tail -n 1 을 마지막 라인에 대한 배관 xargs. 이 경우에는 명령줄은 다음과 같습니다: rjp2tif -v /path/to/rjpeg | tee /dev/tty | tail -n 1 | xargs open -a imagej. 내가 왼쪽으로 tr 에 대한 명령을 간소화할 수 있습니다.
Jim Merkel

네,하지만 xargs 도 지원할 수 있습니다 여러 줄에서 입력에서 언급했듯이 나의 응답,당신은 2 선택 이 경우:중 하나를 실행 open 명령에 대한 각각의 파일→ xargs -0 -n1 open -a imagej;또는 실행 단일 open 명령으로 모든 파일로 전달 args→ xargs -0 open -a imagej. 그래서 당신은 필요가 없 tail -n 1 에서는 모두(지 않는 한 당신은 당신에 관심있는 단 하나의 파일,of course)
ErikMD

실제로 난 잘못 해석의 말:과 -v 옵션이 없이,당신을 여러 파일로 관련이지만,그냥 몇 가지 추가"소"에서 제거할 수 있는 표준을 사용하여 tail -n 1똑같은 사람에게 하는 거예요.
ErikMD

rjp2tif 그냥 작동 하나의 파일이 현재 있습니다. 이 -v 은에 대한 자세한 정보를 표시합니다. 그래서"노이즈는"인쇄에 대한 메타데이터의 파일입니다. 나는 시도할 수 있습고 rjp2tif 작업에 대한 여러 파일이 있습니다.
Jim Merkel

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................