【发布时间】:2017-03-03 22:20:41
【问题描述】:
我有这个字符串:
"a | a | a | a | a | a | a | a"
我想用一个递增的值替换每个“|”,如下所示:
"a0a1a2a3a4a5a6a"
我知道我可以使用 gsub 来替换字符串:
> echo "a | a | a | a | a | a | a | a" | awk '{gsub(/\ \|\ /, ++i)}1'
a1a1a1a1a1a1a1a
但 gsub 似乎只在每个换行符之后递增,所以我现在的解决方案是首先在每个“|”之后放置一个换行符,然后使用 gsub 并再次删除换行符:
> echo "a | a | a | a | a | a | a | a" | awk '{gsub(/\ \|\ /, " | \n")}1' | awk '{gsub(/\ \|\ /, ++i)}1' | tr -d '\n'
a1a2a3a4a5a6a7a
这真的很恶心......
有没有更好的方法来做到这一点?
【问题讨论】: