2017-02-17 55 views
1

我想用产品和ID对文件进行排序,并且我会在awk中得到几个文件作为输出。 我使用的命令是用两列对文件进行排序,同时用AWK命令在输出文件上保留标题

awk -F"|" 'NR>1 {print > "INITIATION_V1_"$1"_"$2".csv"}' test1.csv 

不过,这并不在每一个输出文件我保持头我。我在谷歌搜索了很多,并尝试了NR==1 ||NR==1 ;,但它不适合我。任何人都可以帮助我解决这个问题?谢谢。

+0

感谢miltonb编辑我的问题。我是这个领域的新人。你有解决我的问题的想法吗?谢谢。 –

+0

@HENGUnn,提供一个最小示例输入文件和相应的预期输出文件(名称*和*内容)。 –

+0

我想按列1(产品)和列2(ID)进行拆分。例如,因此product = A和ID = 1的所有内容都将放在一个文件中。我想为每个输出文件保留相同的标题。 –

回答

1
awk -F\| 'NR==1 {h=$0; next} 
       {file="INITIATION_V1_"$1"_"$2".csv"; 
       print (a[file]++?"":h ORS) $0 > file}' test1.csv 

a[file]++是由输出文件名索引的行计数器,仅插入第一行之前与ORS所附的标题,这将成为为每个分割文件中的标题。

+0

它正是我想要的输出文件。非常感谢你@karakfa!我需要一些时间来消化你给出的代码。欣赏它! –

+0

好逻辑,'++' – Inian

+0

@Inian谢谢你的帮助。你们太棒了,善意帮助。它帮助我学到很多东西。希望在未来向你们学习。保持联系。 –

相关问题