簡體   English   中英

熱,將分隔符放入“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

問)如何使用“sed”重新格式化輸出(使用分隔符---)

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

然后我將這個輸出傳遞給另一個像php腳本的進程,並使用(---)分隔符將其分解為數組。

請幫忙。

使用awk

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM