热在 "lsusb" 的输出中加入分隔符

hot to put a delimiter into output of "lsusb"

我有一个 "lsusb" 输出如下:

khalemi@hpx:/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 脚本,并 explode/split 使用 (---) 分隔符将其传递到数组中。

请帮忙。

使用awk:

lsusb -d 0c2e:0200 | awk 'NR>1{print "---\n" [=10=]}'

使用sed

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

在这两种情况下,代码都通过在除第一行之外的每一行之前添加 ---\n 来工作。

在 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
)

另一种方法

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