【发布时间】:2014-11-09 14:38:05
【问题描述】:
假设我有一个文件在一行上有多个键值对:
$ cat test.txt
fruit: 23 oranges 55 bananas 3 peaches
candy: 16 m&m's 5 ju_ju_beans
使用 Perl,在每一行捕获多个未知数字的键、值对是很简单的:
$ perl -lane 'print "$1" while m/(\d+\s+\S+)/g' /tmp/test.txt
23 oranges
55 bananas
3 peaches
16 m&m's
5 ju_ju_beans
这可能与sed有关吗?
我试过了:
$ sed -E -n 's/(\d+\s+\S+)/$1\n/g; p' /tmp/test.txt
fruit: 23 oranges 55 bananas 3 peaches
candy: 16 m&m's 5 ju_ju_beans
但这只是打印整行。是否有可能(在某些情况下,我的 Google foo 让我失望了)每行只打印一个键值对匹配?
【问题讨论】:
-
我可以问一下——为什么要投反对票?这个问题有问题吗?老实说,我试着只问不明显的问题和有用的答案。欢迎反馈。
-
已使用
regex添加了 GNUawk变体。