函数中的Python子进程awk命令,将列表中的元素作为参数

2024-10-02 08:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用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)

我哪里做错了。波彭能帮上什么忙吗? 在这种情况下兰姆达怎么办?你知道吗

谢谢你的帮助。你知道吗


Tags: csv元素参数stockcodeitemlistus
3条回答

谢谢大家的帮助。你知道吗

我找到了一种更优雅的方法来解决它,尽管它不是通过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

谢谢大家的帮助。你知道吗

我找到了一种更优雅的方法来解决它,尽管它不是通过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

也许抛弃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  

相关问题 更多 >

    热门问题