awk/gsub - 在 gsub 之前、之后、之后显示字符串

awk/gsub - display string before, then after, then before gsub

仅供参考,我是一个 awk/gsub 菜鸟。

我有一个 svn 转储,我正在尝试从中创建一个 users.txt,格式...

user.name = user name <user.name@foo.com>

这是我要去的地方...

awk '/svn:author/ { getline; getline; gsub("[\.]", " ", ); print [=12=], " = ",  , " <", [=12=], "@foo.com>"}' svn_dmp | sort | uniq

不幸的是,它正在更改 [=14=] 的值并删除所有 . 所以我得到...

mr foo = mr foo <mr foo@foo.com>

我希望 gsub 将新字符串写入 </code> 并保留 <code>[=14=]。如何仅在中间 mr.foo 将点换成 space?

[=11=] 是整行,其中包括 </code>,因此当您更改 <code> 时,您也会更改 [=11=] 的那部分。如果你想保留原来的 [=11=] 你需要在修改 </code> 之前将它保存在另一个变量中。 </p> <p>类似</p> <pre><code>$ echo 'mr.foo' | awk '{orig=[=10=] gsub("[\.]", " ", ) print orig " = " " <" orig "@foo.com>"}' mr.foo = mr foo <mr.foo@foo.com>