热把分隔符为“的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脚本的另一过程,和爆炸/使用(---)分隔成阵列拆分它。
请大家帮忙。
答
在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
为什么还要在这个时候用'\ n'(换行符)分割PHP呢? – 2015-02-10 04:49:58
我试过我不行。但后来我发现我必须在explode()中放置“\ n”而不是“\ n”,才能按预期工作。我的坏 – MKhalemi 2015-02-10 05:08:30