我正在尝试使用正则表达式分隔bash输出的结果。
例如
systemd+ 531 0.0 0.0 100272 232 ? Ssl Jan26 0:08 /lib/systemd/systemd-timesyncd
root 675 0.0 0.0 28660 1884 ? Ss Jan26 0:13 /lib/systemd/systemd-logind
message+ 735 0.0 0.0 43712 2692 ? Ss Jan26 0:37 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
在上面的输出中,我想将每个转换为结果对象。
如何使用正则表达式将结果拆分为单独的标记 我能用这个 reg ex分隔单词。但我几乎可以在Linux中看到\ t或多个空格用于分隔每一列
这个正则表达式提供了正确的结果
[\w-:]+
systemd+ 531 0.0 0.0 100272 232 ? Ssl Jan26 0:08 /lib/systemd/systemd-timesyncd
原始匹配模式:
[\w-:]+
$匹配数组:
(
[0] => Array
(
[0] => systemd
[1] => 531
[2] => 0.0
[3] => 0.0
[4] => 100272
[5] => 232
[6] => Ssl
[7] => Jan26
[8] => 0:08
[9] => /lib/systemd/systemd-timesyncd
)
)
然而,它不适用于下线
systemd+ 1183 0.0 0.0 42624 256 ? Ss Jan26 0:00 /lib/systemd/systemd --user
$匹配数组:
(
[0] => Array
(
[0] => systemd
[1] => 1183
[2] => 0.0
[3] => 0.0
[4] => 42624
[5] => 256
[6] => Ss
[7] => Jan26
[8] => 0:00
[9] => /lib/systemd/systemd
[10] => --user
)
)
匹配9和10应该在一起。