热把分隔符为“的lsusb”

问题描述:

的输出我有如下的“的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

在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

使用awk

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

使用sed

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

在这两种情况下,代码的工作原理是,除了第一行的每行前加---\n

另一方法

使用的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