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

时间:2015-12-10 12:31:04

标签: svn awk gsub

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

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

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

这是我必须去的地方......

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

不幸的是,它正在更改$0的值并删除所有.,所以我得到了......

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

我希望gsub将新字符串写入$1并保留$0。如何仅在中间mr.foo中交换空格?

1 个答案:

答案 0 :(得分:2)

$0是整行,其中包含$1,因此当您更改$1时,您也会更改$0的那一部分。如果要保留原始$0,则需要在修改$1之前将其保存在另一个变量中。

这样的东西
$ echo 'mr.foo' | awk '{orig=$0
                        gsub("[\.]", " ", $1)
                        print orig " = "  $1 " <" orig "@foo.com>"}'

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