쉼표로 구분된 데이터를 명령에 대한 별도의 인수로 사용

쉼표로 구분된 데이터를 명령에 대한 별도의 인수로 사용

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/dirfilename.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올바른 일을 하고 있다는 확신이 들면 제거하세요.

관련 정보