Regex 脚本获取正则表达式后面的字符串,并在每一行上用匹配项替换它

Regex 脚本获取正则表达式后面的字符串,并在每一行上用匹配项替换它,regex,sed,Regex,Sed,到目前为止,我们已经能够提取模式匹配之间的刺痛,但还不能根据需要将其扩展到打印 我的文件内容: my number 12345 string1 string2 my number 789 string1 string2 my number 456789023 string3 string4 下一个命令 sed -e "s/.*number//;s/string.*//" filename 给我输出 12345 789 456789023 我需要帮助来扩展它或更好的方式来打印输出

到目前为止,我们已经能够提取模式匹配之间的刺痛,但还不能根据需要将其扩展到打印

我的文件内容:

my number 12345 string1 string2
my number 789 string1 string2
my number 456789023 string3 string4
下一个命令

sed -e "s/.*number//;s/string.*//" filename
给我输出

 12345 
 789 
 456789023 
我需要帮助来扩展它或更好的方式来打印输出

my number 12345 num 12345 string1 string2
my number 789 num 789 string1 string2
my number 456789023 num 456789023 string3 string4 

从你的例子中,我得出:

sed -r "s/number (.*) string/number \1 num \1 string/" FILE

这可能适合您:

sed 's/[0-9]\+/& num &/' file

你有没有试过做这件事,或者想过怎么做?你遇到了问题的哪一部分?嗨,谢谢你的样品。当我尝试时,我得到了非法的选择--r@yandd:这是GNU sed版本4.2.1,如果您没有此选项,请屏蔽参数:
sed“s/number\(.*\)string/number\1 num\1 string/”文件
不幸的是,当我尝试此操作时,我得到了文件的内容,因为它可能是您正在使用的sed版本。也许可以尝试:
sed的/[0-9][0-9]*/&num&/'文件
sed-E的/[0-9]+/&num&/'文件