对于具有相同结构的数万行,我想从这里开始(例如):
abcd 12345 qwerty asdfg
...到这里:
abcd 12345,qwerty asdfg
...和
sed 's/[0-9]\ [A-Z]/,/g'
我可以匹配右边的空格加上它周围的两个字符(5 q),但在替换中我得到(显然):
abcd 1234,werty asdfg
此外,我更喜欢在 Linux Shell 中执行此操作
我如何才能匹配并替换每一行中仅以数字开头和以字母结尾的空格?你能建议我使用另一种工具(甚至方法)来完成此操作吗?
答案1
尝试:
$ echo 'abcd 12345 qwerty asdfg' | sed -E 's/([[:digit:]]) ([[:alpha:]])/\1,\2/g'
abcd 12345,qwerty asdfg
笔记:
我们添加了
-E
扩展的正则表达式语法。[:digit:]
和[:alpha:]
代替0-9
和A-Z
以确保unicode安全。括号用于创建组,我们可以在替换文本中引用。在我们的例子中,
\1
引用数字并\2
引用字母。