下面是我的代码,它从多个CSV中提取并打印组名及其登录的成员。
cat *csv | awk '{print $3,$4}' > /output/userreport.txt
问题是它多次打印出组名
这是当前输出示例
John,Marketing
Bob,Marketingon,Marketing
Todd,Finance
Tim,Finance
所需输出为
营销
John
Bob
Ron
财务
Todd
Tim
我将使用GNUAWK
执行以下任务,让file.csv
内容为
A, B, John, Marketing
C, D, Bob, Marketing
E, F, Ron, Marketing
G, H, Todd, Finance
I, J, Tim, Finance
然后
awk 'BEGIN{FS=", "}{if(group!=$4){group=$4;print $4};print $3}' file.csv
输出
Marketing
John
Bob
Ron
Finance
Todd
Tim
说明:我指示awk
将空格逗号作为字段分隔符(FS
(,然后如果组与上次看到的不同(或者如果还没有处理任何内容,则为空字符串(,则打印组名。每行打印第三列的内容。
(在GNU Awk 5.0.1中测试(
另一个awk
$ awk -F"," ' { if( !($4 in a) ) { print $4 } a[$4]++; print $3 } ' ali.txt
Marketing
John
Bob
Ron
Finance
Todd
Tim
或更短形式的
awk -F"," ' !($4 in a) { print $4 } { a[$4]++; print $3 } ' ali.txt