Regex 使用sed为文件中的所有数字加上字符串前缀
使用sed、awk或其他一些东西,我想在文件中的所有数字前面加上一个字符串,例如 输入: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下略有不同 如果能更好地解决这个问题,我手头
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'