【发布时间】:2019-01-18 19:41:23
【问题描述】:
要求:仅 grep/cut/join/regex。
我有这样的数据:
798 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
15386 /usr/bin/nautilus --gapplication-service
16051 /usr/bin/zeitgeist-daemon
我想从数字中提取行数据到第二个结尾空格,比如
798 /usr/bin/dbus-daemon
仅使用带有或不带有正则表达式的 grep/cut/join。
我试过了
grep -oe "[^ ][^ ]* *[a-zA-Z\]*$"
但结果并不如预期。
【问题讨论】:
-
如果您有 GNU grep,请尝试
grep -oP '^\s*\K\S+\s+\S+'。使用 POSIX ERE,您可以尝试类似grep -oE '[0-9][^ ]* +[^ ]+' -
你已经排除了 awk,它应该是
awk '{print $1, $2}'。 -
是的,我知道 awk。但我受到限制,不能使用awk
-
@wiktor-stribiżew 它奏效了。谢谢。如果可能,请将其添加为答案。
-
如果数字在字符串的开头
^[0-9]+ [^ ]+