Batch file 如何使用基于列值AreaCode和标头的批处理脚本将CSV文件拆分为多个文件

Batch file 如何使用基于列值AreaCode和标头的批处理脚本将CSV文件拆分为多个文件,batch-file,Batch File,好的,这最好用普通语言编写,但由于您需要一个shell脚本,任务可以分为3个问题: 识别唯一的区号名称 拿到头球 假定已识别的区号足够唯一,则通过文件对其进行grep 获取唯一的区号,假设源文件为/tmp/a.csv CustomerID,MobileNumber,AreaCode,ManagerID,Category A12345,9001528583,DEL4505,A1Q98787,Premium A12346,9116424968,DEL4505,A1Q98787,Premium A12

好的,这最好用普通语言编写,但由于您需要一个shell脚本,任务可以分为3个问题:

识别唯一的区号名称 拿到头球 假定已识别的区号足够唯一,则通过文件对其进行grep 获取唯一的区号,假设源文件为/tmp/a.csv

CustomerID,MobileNumber,AreaCode,ManagerID,Category
A12345,9001528583,DEL4505,A1Q98787,Premium
A12346,9116424968,DEL4505,A1Q98787,Premium
A12347,7742791869,DEL4505,A1Q98787,Premium
A12352,9636358908,DEL4505,A1Q98787,Premium
A12353,9928585573,DEL4505,A1Q98787,Premium
A12354,8290663534,DEL4505,A1Q98787,Premium
A12348,9571840613,LED3487,A1Q98786,Premium
A12349,7426894444,LED3487,A1Q98786,Premium
A12350,8890980895,LED3487,A1Q98786,Premium
A12351,7023117947,LED3487,A1Q98786,Premium
A12359,9784455463,LED3487,A1Q98786,Premium
A12360,9001052301,LED3487,A1Q98786,Premium
A12361,9660564121,LED3487,A1Q98786,Premium
A12362,9680167188,LED3487,A1Q98786,Premium
A12355,7297949542,MUM1254,A1Q98787,Premium
A12356,8529147216,MUM1254,A1Q98787,Premium
A12357,9680079309,MUM1254,A1Q98787,Premium
A12358,9680141171,MUM1254,A1Q98787,Premium
A12363,7023166631,MUM1254,A1Q98787,Premium
A12364,8875938450,MUM1254,A1Q98787,Premium
或仅适用于shell工具

perl -F, -lanE '$h{$F[2]} = 1 if $F[2] ne "AreaCode";END{say for keys %h}' /tmp/a.csv
标题

cut -f3 -d, /tmp/a.csv | grep -v "AreaCode" | uniq
将所有3个步骤合并到一条管线中:

f="/tmp/a.csv"; header=`head -1 $f`

说明不清楚,要如何拆分此文件?要基于列值-列名称-区号拆分此文件。新拆分的文件名应基于列名。你能分享批处理脚本代码吗?使用搜索工具,仅此网站上就有足够多的相关问题和答案,足以让你忙上几天。我们希望您先进行搜索和调整,然后才能就编码问题寻求帮助。您的编码问题不可能是您没有研究、尝试、失败、调试和解释特定的结果问题。findstr、AreaCode、LED3487、infle.csv>outfile.csv您为什么使用Perl和几个标准Unix命令发布了答案?这个问题只有一个标签,[],这意味着一个Windows或OS/2操作系统脚本,扩展名为.bat或.cmd,而不是[],或[],或[],而不是[]。Hm,我没有意识到批处理文件是针对Windows的,我的错。
f="/tmp/a.csv"; header=`head -1 $f`;cut -f3 -d, /tmp/a.csv | grep -v 'AreaCode' | uniq | while read line; do echo "$header" >"${line}.txt" && grep "\,${line}\," $f >>"${line}.txt"; done