Я хотел бы использовать uniq для подсчета количества вхождений каждой строки, исключая числовое значение в начале строки (пример: 0000: 01: 00.0)
Каждое вхождение встречается более одного раза , Могут быть ситуации, когда каждое вхождение происходит только один раз.
Пример ввода
[root@cpod-compute-1 ~]# for i in $(awk -F= '/PCI_SLOT_NAME/{print $2}' /sys/class/net/*/device/uevent); do lspci -Dm | grep $i; done
0000:01:00.0 "Ethernet controller" "Intel Corporation" "I350 Gigabit Network Connection" -r01 "Cisco Systems Inc" "Device 00d5"
0000:01:00.1 "Ethernet controller" "Intel Corporation" "I350 Gigabit Network Connection" -r01 "Cisco Systems Inc" "Device 00d5"
0000:0a:00.1 "Ethernet controller" "Intel Corporation" "Ethernet Controller X710 for 10GbE SFP+" -r01 "Cisco Systems Inc" "Ethernet Converged NIC X710-DA"
0000:0a:00.2 "Ethernet controller" "Intel Corporation" "Ethernet Controller X710 for 10GbE SFP+" -r01 "Cisco Systems Inc" "Ethernet Converged NIC X710-DA"
0000:0a:00.3 "Ethernet controller" "Intel Corporation" "Ethernet Controller X710 for 10GbE SFP+" -r01 "Cisco Systems Inc" "Ethernet Converged NIC X710-DA"
Ожидаемый результат
2 "Ethernet controller" "Intel Corporation" "I350 Gigabit Network Connection" -r01 "Cisco Systems Inc" "Device 00d5"
3 "Ethernet controller" "Intel Corporation" "Ethernet Controller X710 for 10GbE SFP+" -r01 "Cisco Systems Inc" "Ethernet Converged NIC X710-DA"
Пример нерабочего случая
[root@cpod-compute-1 ~]# for i in $(awk -F= '/PCI_SLOT_NAME/{print $2}' /sys/class/net/*/device/uevent); do lspci -Dm | grep $i | awk '{$1="";print $0}' | sort | uniq -c; done
1 "Ethernet controller" "Intel Corporation" "I350 Gigabit Network Connection" -r01 "Cisco Systems Inc" "Device 00d5"
1 "Ethernet controller" "Intel Corporation" "I350 Gigabit Network Connection" -r01 "Cisco Systems Inc" "Device 00d5"
1 "Ethernet controller" "Intel Corporation" "Ethernet Controller X710 for 10GbE SFP+" -r01 "Cisco Systems Inc" "Ethernet Converged NIC X710-DA"
1 "Ethernet controller" "Intel Corporation" "Ethernet Controller X710 for 10GbE SFP+" -r01 "Cisco Systems Inc" "Ethernet Converged NIC X710-DA"
1 "Ethernet controller" "Intel Corporation" "Ethernet Controller X710 for 10GbE SFP+" -r01 "Cisco Systems Inc" "Ethernet Converged NIC X710-DA"
Собранные выходы - Я не вижу неожиданных символов в собранных выходах.
[root@cpod-compute-1 ~]# for i in $(awk -F= '/PCI_SLOT_NAME/{print $2}' /sys/class/net/*/device/uevent); do lspci -Dm | grep $i | awk '{$1="";print $0}' | od -c; done
0000000 " E t h e r n e t c o n t r
0000020 o l l e r " " I n t e l C o
0000040 r p o r a t i o n " " I 3 5 0
0000060 G i g a b i t N e t w o r k
0000100 C o n n e c t i o n " - r 0
0000120 1 " C i s c o S y s t e m s
0000140 I n c " " D e v i c e 0 0
0000160 d 5 " \n
0000164
0000000 " E t h e r n e t c o n t r
0000020 o l l e r " " I n t e l C o
0000040 r p o r a t i o n " " I 3 5 0
0000060 G i g a b i t N e t w o r k
0000100 C o n n e c t i o n " - r 0
0000120 1 " C i s c o S y s t e m s
0000140 I n c " " D e v i c e 0 0
0000160 d 5 " \n
0000164
[root@cpod-compute-1 ~]# for i in $(awk -F= '/PCI_SLOT_NAME/{print $2}' /sys/class/net/*/device/uevent); do lspci -Dm | grep $i | awk '{$1="";print $0}' | sed -n l; done
"Ethernet controller" "Intel Corporation" "I350 Gigabit Network Conn\
ection" -r01 "Cisco Systems Inc" "Device 00d5"$
"Ethernet controller" "Intel Corporation" "I350 Gigabit Network Conn\
ection" -r01 "Cisco Systems Inc" "Device 00d5"$
Я не могу понять, в чем разница между соседними строками, которые выглядят дублированными.
Пожалуйста, дайте мне знать, если требуются какие-либо дополнительные выводы.
Спасибо.