2015-02-10 45 views
1

的輸出我有如下的「的lsusb」輸出:熱把分隔符爲「的lsusb」

[email protected]:/opt$ lsusb -d 0c2e:0200 
Bus 002 Device 004: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 
Bus 002 Device 006: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 

Q)我如何使用「sed的」重新設置輸出(使用分隔符--- )要像

Bus 002 Device 004: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 
--- 
Bus 002 Device 006: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 

我會然後通過這個輸出到像PHP腳本的另一過程,和爆炸/使用(---)分隔成陣列拆分它。

請大家幫忙。

+1

爲什麼還要在這個時候用'\ n'(換行符)分割PHP呢? – 2015-02-10 04:49:58

+0

我試過我不行。但後來我發現我必須在explode()中放置「\ n」而不是「\ n」,才能按預期工作。我的壞 – MKhalemi 2015-02-10 05:08:30

回答

1

在PHP中,你可以做喜歡

通過preg_split

$str = <<<EOT 
Bus 002 Device 004: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 
Bus 002 Device 006: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 
EOT; 
$split = preg_split('~\n~', $str); 
print_r($split); 

隨着explode

$split = explode("\n", $str); 

這根據換行符拆分輸入。

輸出:

Array 
(
    [0] => Bus 002 Device 004: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 
    [1] => Bus 002 Device 006: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 
) 
+0

幹得好,解決了實際問題並消除了黑客行爲。 – 2015-02-10 05:13:56

2

使用awk

lsusb -d 0c2e:0200 | awk 'NR>1{print "---\n" $0}' 

使用sed

lsusb -d 0c2e:0200 | sed '1!s/^/---\n/' 

在這兩種情況下,代碼的工作原理是,除了第一行的每行前加---\n

0

另一方法

使用的sed

lsusb -d 0c2e:0200|sed '$!{s/$/&\n---/g}' 

結果

Bus 002 Device 004: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner 
--- 
Bus 002 Device 006: ID 0c2e:0200 Metrologic Instruments Metrologic Scanner