2015-02-10 4 views
1

у меня есть «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 

Я затем передать этот вывод в другой процесс, как скрипт, и взрываются/разделить его с помощью (---) разделитель в массив.

помогите пожалуйста.

+1

Зачем беспокоиться об этом, когда вы можете просто разделить PHP на '\ n' (newline)? –

+0

Я пытался, чтобы я не работал. но позже я узнал, что мне пришлось поместить «\ n» вместо «\ n» в explode(), чтобы он работал так, как ожидалось. мой плохой – MKhalemi

ответ

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 
) 
+0

Молодцы, решая настоящую проблему и удаляя хаки. –

2

Использование awk:

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

Использование sed:

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

В обоих случаях код работает путем добавления ---\n перед каждой линии для первой линии, за исключением.

0

другой подход

с использованием СЭД

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 
Смежные вопросы