1

我有一个“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

问)我如何使用“sed”重新格式化输出(使用分隔符---)就像

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

然后我会将此输出传递给另一个进程,如 php 脚本,并使用 (---) 分隔符将其分解/拆分为数组。

请帮忙。

4

3 回答 3

2

使用awk

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

使用sed

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

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

于 2015-02-10T04:46:11.720 回答
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
)
于 2015-02-10T05:00:41.837 回答
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
于 2015-02-10T06:03:42.620 回答