Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用sed为文件中的所有数字加上字符串前缀_Regex_Bash_Awk_Sed - Fatal编程技术网

Regex 使用sed为文件中的所有数字加上字符串前缀

Regex 使用sed为文件中的所有数字加上字符串前缀,regex,bash,awk,sed,Regex,Bash,Awk,Sed,使用sed、awk或其他一些东西,我想在文件中的所有数字前面加上一个字符串,例如 输入: sometext(0, 456) sometext(01, 10) 输出: sometext(somestring0, somestring456) sometext(somestring01, somestring10) 我曾尝试使用sed,但我的技能有限,因此我无法产生任何有意义的输出 使用OSX10.11,所以我知道sed在BSD中的行为与在其他*nix下略有不同 如果能更好地解决这个问题,我手头

使用sed、awk或其他一些东西,我想在文件中的所有数字前面加上一个字符串,例如

输入:

sometext(0, 456)
sometext(01, 10)
输出:

sometext(somestring0, somestring456)
sometext(somestring01, somestring10)
我曾尝试使用sed,但我的技能有限,因此我无法产生任何有意义的输出

使用OSX10.11,所以我知道sed在BSD中的行为与在其他*nix下略有不同


如果能更好地解决这个问题,我手头上还有perl和python,但sed和awk是首选。

您可以使用这个sed命令匹配并捕获一个数字,并在替换前缀中添加它:

sed -E 's/[[:digit:]]+/somestring&/g' file

sometext(somestring0, somestring456)
sometext(somestring01, somestring10)
请记住,somestring不应包含特殊的替换结构,如&、\1、\2、\3等。

或sed的/[0-9][0-9]*/somestring&/g'文件,以便于在所有sed之间进行移植。在模式中,如果sometext中有一个数字,它会给出错误的结果sed-E的/\[,][空白:][0-9][0-9]*\/\1 somestring\2/g'