No sé qué tan eficiente será, pero podría hacer algo como esto con un hash de matrices anónimas, usando un map
para aplicar la asignación de concatenación de cadenas .=
a cada elemento de cada valor hash:
perl -F, -nle '
$k = shift @F;
map { $h{$k}[$_].= $F[$_] } 0..$#F
}{
for $k (sort { $a <=> $b } keys %h) {
print join ",", $k, @{ $h{$k} }
}' file
key,c1,c2,c3......,cn
1,caryes,phoneno,catis,..............,kitehello
2,abchello,defyes,hijno,.............,pothelp
Попробуйте с USBDEVFS_RESET
ioctl.
Если в вашей системе нет утилиты usbreset
как части usbutils
, вы можете скомпилировать утилиту изhttps://github.com/gregkh/usbutils/blob/master/usbreset.cс помощью только cc usbreset.c -o usbreset
.
На некоторых устройствах (, таких как мой маршрутизатор ), вам придется перезагрузить концентратор, к которому он подключен, а не устройство, чтобы он вступил в силу.
#./usbreset
Usage:
usbreset PPPP:VVVV - reset by product and vendor id
usbreset BBB/DDD - reset by bus and device number
usbreset "Product" - reset by product name
Devices:
Number 001/004 ID 062a:4101 2.4G Keyboard Mouse
Number 001/006 ID 03f0:e111 DeskJet 2130 series
Number 001/002 ID 05e3:0608 USB2.0 Hub
Number 001/005 ID 248a:8514 Wireless Receiver
Number 001/003 ID 05e3:0608 USB2.0 Hub
$./a.out 062a:4101