我有一个“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脚本的进程,并使用(---)分隔符将其拆分/拆分为数组。
请帮忙。
答案 0 :(得分:2)
使用awk
:
lsusb -d 0c2e:0200 | awk 'NR>1{print "---\n" $0}'
使用sed
:
lsusb -d 0c2e:0200 | sed '1!s/^/---\n/'
在这两种情况下,代码的工作原理是在除第一行之外的每一行之前添加---\n
。
答案 1 :(得分: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
)
答案 2 :(得分: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