我想使用list元素作为参数对awk命令进行子处理。
使用单个参数,并且从shell提示符开始,它很简单:
$ awk -F "," '/US/ && /00001/ {print $1","$3}' stock_inventory.csv > pretest_00001.csv
因此,使用列表,我把它全部放在Python脚本中,如:
import subprocess
mylist = [00001, 00002, 00003]
def myawk(item_code):
subprocess.call("awk -F "," '/US/ && /%d/ {print $1","$3}' stock_inventory.csv > pretest_%d.csv") % item_code
for i in mylist:
myawk(i)
我在某处做错了。 Popen可以提供任何帮助吗? 在这种情况下,lambda怎么样?
谢谢你的帮助。
答案 0 :(得分:0)
也许是ditch python并在awk
中完成所有工作?
$ awk 'BEGIN{FS=OFS=",";
n=split("00001,00002,00003",item)}
/US/ {for(i=1;i<=n;i++)
if($0~item[i])
print $1,$3 > "pretest_"item[i]".csv"}' stock_inventory.csv
答案 1 :(得分:0)
感谢大家的帮助。
我找到了一种更优雅的方法来解决它,虽然它不是通过Python脚本而是通过Bash而是。
#!/bin/bash
declare -a arr=("00001" "00002" "00003")
for i in "${arr[@]}"
do
cat stock_inventory.csv | grep $i | grep US | awk -F "," '{print $1","$3}' > pretest_$i.csv
done