【发布时间】:2015-12-10 12:31:04
【问题描述】:
仅供参考,我是 awk/gsub 菜鸟。
我有一个 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 中间的空格?
【问题讨论】:
-
$0是包括$1在内的整行,因此当您更改$1时,您也会更改$0的那部分。 -
在使用 getline 之前,请务必阅读并完全理解 awk.info/?tip/getline 上关于 getline 的所有警告和哥特式声明,然后通常不会。您的问题不需要 getline 并且您使用它的方式无论如何都是错误的。发布几行示例输入和预期输出,我们可以为您提供帮助。