使用 sed 为文件中的所有数字加上字符串前缀
Posted
技术标签:
【中文标题】使用 sed 为文件中的所有数字加上字符串前缀【英文标题】:Prefix all numbers in a file with a string using sed 【发布时间】:2016-12-20 16:07:52 【问题描述】:使用 sed、awk 或其他可能的东西我想在文件中的所有数字前加上一个字符串,例如
输入:
sometext(0, 456)
sometext(01, 10)
输出:
sometext(somestring0, somestring456)
sometext(somestring01, somestring10)
我曾尝试使用 sed,但我的技能有限,因此未能产生任何有意义的输出。
使用 OSX10.11,所以我知道 sed 在 BSD 中的行为与在其他 *nix 中的行为略有不同。
如果能更好地解决这个问题,我手头也有 perl 和 python,但首选 sed 和 awk。
【问题讨论】:
【参考方案1】:您可以使用这个 sed 命令来匹配和捕获一个数字并替换为它的前缀:
sed -E 's/[[:digit:]]+/somestring&/g' file
sometext(somestring0, somestring456)
sometext(somestring01, somestring10)
请记住,somestring
不应包含特殊的替换结构,例如 &, \1, \2, \3
等。
【讨论】:
或sed 's/[0-9][0-9]*/somestring&/g' file
用于所有 sed 的可移植性。
可能在模式中添加(
和,
,如果sometext
中有数字,则会给出错误结果sed -E 's/\([(,][[:blank:]]*\)\([0-9][0-9]*\)/\1somestring\2/g'
以上是关于使用 sed 为文件中的所有数字加上字符串前缀的主要内容,如果未能解决你的问题,请参考以下文章