![xargs replstr이 예상대로 작동하지 않습니다. 두 번째 인수로 {}를 허용하지 않습니다.](https://linux55.com/image/182496/xargs%20replstr%EC%9D%B4%20%EC%98%88%EC%83%81%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EB%91%90%20%EB%B2%88%EC%A7%B8%20%EC%9D%B8%EC%88%98%EB%A1%9C%20%7B%7D%EB%A5%BC%20%ED%97%88%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내가 실행하려는 명령은 다음과 같습니다.
mdb-tables davidoff.mdb | xargs -I {} mdb-export davidoff.mdb {} > {}.csv
mdb-export는 두 개의 매개변수를 사용하며 두 번째 매개변수를 파이프하려고 합니다. 그런 다음 각각을 파일에 쓰고 싶습니다.
이것은 작동하지 않습니다. 삭제했는데도 > {}.csv
계속 오류가 뜹니다.
Error: Table {} does not exist in this database.
쉘은 zsh
1부의 출력 예:
% mdb-tables davidoff.mdb
anatomypiclink bugs bugseverity bugtype classifications Diseases docaccess docaccesstype docassignments docclassifications docdetails docnotes docpicturelink docqa docs doctype keypicturelink keywords links logons mediatype navdoclinks navimagelinks navstructures organs Paste Errors pictureclassifications pictures picturetype qub3_queries_que qub3_relations_rel qub3_settings_set quotes references sequencelinks sequences subDocType videos dictionarytable doclinks docstatus media docs_ExportErrors
테스트 케이스로서 나는 이것을 작동시킬 수 있었습니다:
printf "1\n2\n3\n" | xargs -I touch {}
왜 replstr을 두 번째 인수로 사용할 수 없나요?
답변1
일부 시스템의 일부 버전에서는 xargs
매개변수에 255바이트 제한이 있습니다. 이 경우 매뉴얼 페이지의 매개변수 섹션에서 이에 대해 언급해야 합니다 -I
. 인수가 이 제한보다 크면 자리 표시자가 바뀌지 않습니다. mdb-tables
테이블 이름 목록을 500바이트의 한 줄로 출력합니다.
Quasímodo가 언급했듯이 -d "\n"
매개변수를 사용하여 테이블 이름을 별도의 줄로 분할할 수도 있습니다 -1
.