社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Ed Morton  »  全部回复
回复总数  1
6 年前
回复了 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