私信  •  关注

Ed Morton

Ed Morton 最近创建的主题
Ed Morton 最近回复了
5 年前
回复了 Ed Morton 创建的主题 » 在macos上使用sed替换git日志中的名称(对于gource)

一个regex几乎肯定是错误的方法,因为你会得到错误的匹配,除非你非常小心,这是低效的。

创建一个 aliases 包含输出中每个名称行的文件,后跟应映射到该文件的所有名称,然后可以执行此操作,以便在一次awk调用中清晰、简单、可靠、可移植且高效地更改它们:

$ cat tst.awk
BEGIN { FS="[|]" ; OFS="|" }
NR==FNR {
    for (i=2; i<=NF; i++) {
        alias[$i] = $1
    }
    next
}
$2 in alias { $2 = alias[$2] }
{ print }

.

$ cat aliases
John Doe|John|john_doe|Doe, John
Susan Barker|Susie B|Barker, Susan

是的。

$ cat file
1551272464|John|A|repo1/file1.txt
1551272464|Susie B|A|repo2/filex.py
1551272464|john_doe|A|repo1/folder/file9.py
1551272464|Doe, John|A|repo2/filex.py
1551272464|Barker, Susan|A|repo2/filex.py

.

$ awk -f tst.awk aliases file
1551272464|John Doe|A|repo1/file1.txt
1551272464|Susan Barker|A|repo2/filex.py
1551272464|John Doe|A|repo1/folder/file9.py
1551272464|John Doe|A|repo2/filex.py
1551272464|Susan Barker|A|repo2/filex.py