我将这个数据库转储文件放在逗号分隔的CSV文件中,第一行作为标题/表名,其余部分是数据,有些则有重复的条目
listSources
我只需在HOST_#_INFORMATION,HOST#,Primary Hostname,DNS Domain,IP_#_INFORMATION,Primary IP,DNS
,11,abc,example.com,,10.10.10.10,10.10.10.1
,12,bcd,example.com,,10.10.10.11,10.10.10.1
,13,cde,example.com,,10.10.10.12,10.10.10.1
,11,abc,example.com,,10.10.10.10,10.10.10.1
,13,cde,example.com,,10.10.10.12,10.10.10.1
和HOST_#_INFORMATION
之间打印唯一列。我正在寻找的输出是
IP_#_INFORMATIO
我尝试使用awk gsub选项但只打印第一行。我该如何解析这个csv文件。我也对perl选项持开放态度。感谢
答案 0 :(得分:2)
[root@test /tmp]$ awk -F, -vOFS=, '{if(++a[$2,$3,$4]==1)print $2,$3,$4}' a
HOST#,Primary Hostname,DNS Domain
11,abc,example.com
12,bcd,example.com
13,cde,example.com
答案 1 :(得分:1)
不需要awk或sed,而是使用cut'n'sort:
cut -d, -f2-4 infile | sort -u
输出:
11,abc,example.com
12,bcd,example.com
13,cde,example.com
答案 2 :(得分:0)
假设您的输入格式(OP指定2个字段但显示1个配置)
awk -F ',' 'NR == 1{print "HOST#,Primary Hostname,DNS Domain"} NR > 1{print $2 "," $3, "," $4}' YourFile
答案 3 :(得分:0)
假设您将从数据中单独解析标头,这是解析数据和删除重复项的方法:
awk -F',' '{print $2","$3","$4}'|sort -u
答案 4 :(得分:0)
在Perl中,您可以使用Text::CSV模块,该模块具有丰富的功能集来处理CSV文件。