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
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
シェルを使用する場合のもう1つの短い方法は、プロセス置換を使用することです。
test.py --arg <(awk '...' alist.txt)
これは<(command)
結果を含む擬似ファイルの名前に置き換えられますcommand
。