【发布时间】:2015-04-08 15:22:17
【问题描述】:
我的文件名“旧”包含“123 abc”。当我在 linux 终端中使用以下 sed 命令时:
sed 's:[0-9]+:& &:' <old \> new
新文件包含与旧文件相同的数据,即“123 abc”。 但输出应该是“123 123 abc”。 我不知道我错在哪里。谁能帮帮我……
【问题讨论】:
-
您的问题现在解决了吗?您可能会考虑接受其中一个答案?
我的文件名“旧”包含“123 abc”。当我在 linux 终端中使用以下 sed 命令时:
sed 's:[0-9]+:& &:' <old \> new
新文件包含与旧文件相同的数据,即“123 abc”。 但输出应该是“123 123 abc”。 我不知道我错在哪里。谁能帮帮我……
【问题讨论】:
将您的命令更改为:
sed 's:[0-9]\+:& &:' old > new
或
sed -r 's:[0-9]+:& &:' old > new
-r :使用扩展正则表达式(在我们的例子中,+ 按预期工作)
【讨论】:
两句小话:
+ 符号前使用反斜杠无需在> 符号前使用反斜杠来管道输出:
sed 's:[0-9]\+:& &:' old > new
(还有一个小改动;但不是必需的:输入文件之前不需要<;sed 知道你会给它一个文件。)
【讨论】: