![쉼표로 구분된 데이터를 명령에 대한 별도의 인수로 사용](https://linux55.com/image/203573/%EC%89%BC%ED%91%9C%EB%A1%9C%20%EA%B5%AC%EB%B6%84%EB%90%9C%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EB%AA%85%EB%A0%B9%EC%97%90%20%EB%8C%80%ED%95%9C%20%EB%B3%84%EB%8F%84%EC%9D%98%20%EC%9D%B8%EC%88%98%EB%A1%9C%20%EC%82%AC%EC%9A%A9.png)
xargs
와 함께 사용하고 있지만 추가 처리를 위해 파이프할 수 있는 변수 cut
로 출력을 가져오는 방법을 잘 모르겠습니다 .cut
그래서 다음과 같은 텍스트 파일이 있습니다.
test.txt
:
/some/path/to/dir,filename.jpg
/some/path/to/dir2,filename2.jpg
...
나는 이렇게 한다:
cat test.txt | xargs -L1 | cut -d, -f 1,2
/some/path/to/dir,filename.jpg
하지만 내가 하고 싶은 것은:
cat test.txt | xargs -L1 | cut -d, -f 1,2 | echo $1 $2
$1
와 는 어디에 $2
있고 ./some/path/to/dir
filename.jpg
혼란스러워서 이것을 달성 할 수없는 것 같습니다.
내가 달성하고 싶은 것은 다음과 같습니다
read_somehow_the text_fields_from text_file | ./mypgm -i $1 -o $2
답변1
GNU에는 사용할 수 있는 열 형식 데이터를 읽는 것보다 parallel
더 많은 옵션이 있습니다.xargs
$ parallel --colsep , echo ./mypgm -i {1} -o {2} :::: test.txt
./mypgm -i /some/path/to/dir -o filename.jpg
./mypgm -i /some/path/to/dir2 -o filename2.jpg
또는 쉘 루프를 사용하십시오.
$ while IFS=, read -r x y rest_if_any_ignored; do echo ./mypgm -i "$x" -o "$y"; done < test.txt
./mypgm -i /some/path/to/dir -o filename.jpg
./mypgm -i /some/path/to/dir2 -o filename2.jpg
echo
올바른 일을 하고 있다는 확신이 들면 제거하세요.