我正在使用一些bash脚本,需要你的帮助:)我想要的结果:V04.01,V04.02
- 一个字符串,没有新行,唯一值,逗号。仅名称前缀(全部在 __ 之前),仅适用于 sql 文件。
原始 diff 命令及其结果:
git diff --name-only 123132132213 origin/dev
给出:
.abc.yml
abc/test.xml
aaa/V04.01__SampleInsert.sql
bbb/V04.01__SampleInsert.sql
abc/efg/V04.02__SampleUpdate.sql
我想要的结果: V04.01、V04.02
我的脚本不起作用:
git diff --name-only 12313123123132 origin/dev | git diff --name-only 12313123123132 origin/dev | grep '.sql' | grep '.sql' |转 |切 -d"/"-f1 |转 | awk '{sub(/__.*/,x)}1'
结果是:
V04.01
V04.01
V04.02
如果有人知道如何内联执行此操作,请提前致谢。
最佳答案
使用 cat file
代替我没有的 git
命令:
$ cat file | awk -F'/' '/\.sql$/{ sub(/__.*/,"",$NF); if ( !seen[$NF]++ ) printf "%s%s", sep, $NF; sep=", " }'
V04.01, V04.02
我知道您说过您不需要任何换行符,但这会使输出不是有效的文本文件,因此如果您确实想要终止换行符,只需在末尾添加 END{print ""}
awk 脚本的一部分。
关于linux - Bash:将带有新行的字符串转换为带有逗号、内联的唯一值的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77037291/