끝에 추가 매개변수가 있는 파이프를 사용하십시오. 여러 매개변수를 사용하여 파이프라인 지침을 올바르게 부트스트랩합니다.

끝에 추가 매개변수가 있는 파이프를 사용하십시오. 여러 매개변수를 사용하여 파이프라인 지침을 올바르게 부트스트랩합니다.

일반 지침:

나는 같은 문제에 여러 번 직면했고 단계별 스크립트로 해결했습니다. 하지만 파이프와 한 줄짜리 파이프가 있으면 내 삶이 더 편해질 것이라는 것을 알고 있습니다.

간단히:

command1 -flag target.file | command2 -flag 

내가 이해하는 command2바에 따르면 command1 -flag target.file. 그러나 command2끝에 추가해야 하는 추가 매개변수가 있습니다. 따라서 다음과 같이 읽을 수 있습니다.

command2 -flag OUTPUTOFCOMMAND1 argument2

파이프를 직접 사용하려고 하면 |물론 출력을 두 번째 명령의 끝으로 파이프하기 때문에 원하는 명령을 얻지 못합니다. 파이프 출력을 두 번째 명령어의 특정 부분으로 리디렉션하고 싶습니다. 이 같은:

command1 -flag target.file | command2 -flag PIPEOUTPUT1HERE argument2

여기서 비슷한 질문을 찾았습니다.이전 명령의 출력을 다음 명령의 인수로 전달합니다., 하지만 저는 좀 더 일반적이고 간단한 방법을 원합니다. 내가 성공하지 못한 채 사용한 것처럼 :

command1 | xargs -I{} command2 {}

이것은 기본적으로 수행되는 작업 command2 $(command1)이지만 전체 출력을 파이프로 연결하고 싶습니다. 단순한 것처럼ls | grep "something"

내 구체적인 사례:

dat 파일의 첫 번째 줄을 가져와서 11줄마다 나누고 싶습니다.

$ tail -n +2 ac_sweep_m+_-30.00mT.rx | xargs -I{} split -l 2 {} 

그러나 두 번째 명령이 끝나면 이전 출력의 각 줄을 전달합니다.

"ac_sweep_m+_-30.00mT_"              
split: cannot open '0.000000e+00 0.000363094 -0.000518363 -0.000389763 0 ' for reading: No such file or directory
split: cannot open '2.800000e-11 -0.0853443 -0.00230621 -0.000370474 0 ' for reading: No such file or directory
split: cannot open '6.700000e-11 -0.205325 -0.00375738 0.000241809 0 ' for reading: No such file or directory

파이프라인을 특정 위치로 정확히 연결하려면 어떻게 해야 합니까?

답변1

해결책은 생각보다 간단합니다.

이것을하기 위해:

command1 -flag target.file | command2 -flag PIPEOUTPUT1HERE argument2

-올바른 부팅 출력 에만 해당첫 번째 명령:

command1 -flag target.file | command2 -flag - argument2

나로서는, 아주 잘 작동합니다. dat 파일의 첫 번째 줄을 잘라내고 파일을 각각 21줄의 섹션으로 나눕니다.

$ tail -n +2 ac_sweep_m+_-30.00mT.rx | split -l 21 - "ac_sweep_m+_-30.00mT_"
$ ls
ac_sweep_m+_-30.00mT_aa  ac_sweep_m+_-30.00mT_ae  ac_sweep_m+_-30.00mT_ai  ac_sweep_m+_-30.00mT_am  ac_sweep_m+_-30.00mT_aq  
ac_sweep_m+_-30.00mT_ab  ac_sweep_m+_-30.00mT_af  ac_sweep_m+_-30.00mT_aj  ac_sweep_m+_-30.00mT_an  ac_sweep_m+_-30.00mT_ar

관련 정보