
test.py
매개변수(입력 파일 이름)가 포함된 Python 스크립트가 있습니다. 를 test.py --arg filename
사용할 수 있도록 쉘 스크립트에서 이것을 실행하고 싶습니다 awk
. alist.txt
각 줄에 파일 이름이 포함되어 있고 Python 코드가 이를 매개변수로 사용하고(list.txt) 각 줄을 반복하도록 하려고 합니다(예: 파일 이름)을 실행하고 .
다음 명령은 제대로 작동하지만 이 명령줄의 결과를 사용하여 매개변수에 test.py 스크립트를 포함하고 싶습니다.
awk '{print substr($0, 1, length($0)-11)}' list.txt
답변1
한 가지 해결책은 awk
명령 출력의 각 줄을 반복하고 test.py
각 줄을 인수로 호출하는 것입니다.
awk '{print substr($0, 1, length($0)-11)}' alist.txt |
while read -r; do
test.py --arg "$REPLY"
done
또 다른 해결책은 다음을 사용하는 것입니다 xargs
.
awk '...' list.txt | xargs -L1 test.py --arg
[참고: 질문에 대한 오해로 인한 대체 답변]
내 이해는 test.py --arg alist.txt
당신이 원하는 것이 아니라는 것입니다:
test.py --arg (file containing the result of your awk command)
이 경우 명령 결과를 awk
파일에 저장하고 해당 파일을 인수로 제공 할 수 있습니다 test.py
.
awk '...' alist.txt > alist_processed_by_awk.txt
test.py --arg alist_processed_by_awk.txt
rm alist_processed_by_awk.txt
bash
쉘을 사용하는 경우 또 다른 더 짧은 방법은 프로세스 대체를 사용하는 것입니다.
test.py --arg <(awk '...' alist.txt)
이는 <(command)
결과가 포함된 의사 파일의 이름으로 대체됩니다 command
.