我正在使用一些bash脚本,需要您的帮助:)我想要的结果:V04.01, V04.02-一个字符串,没有新行,唯一的值,逗号.仅名称前缀(都在__之前),仅适用于SQL文件.

The original diff command and its results:

git diff --name-only 123132132213 origin/dev

gives:

.abc.yml
abc/test.xml
aaa/V04.01__SampleInsert.sql
bbb/V04.01__SampleInsert.sql
abc/efg/V04.02__SampleUpdate.sql

The result that I want:V04.01, V04.02

My script which is not working:

git diff --name-only 12313123123132 origin/dev | grep '.sql' | rev | cut -d"/" -f1 | rev | awk '{sub(/__.*/,x)}1'

The result is:

V04.01
V04.01
V04.02

提前感谢,如果谁有一些 idea 如何做内联.

推荐答案

cat file代替我没有的git命令:

$ cat file | awk -F'/' '/\.sql$/{ sub(/__.*/,"",$NF); if ( !seen[$NF]++ ) printf "%s%s", sep, $NF; sep=", " }'
V04.01, V04.02

我知道您说过不需要任何换行符,但这会使输出不是有效的文本文件,所以如果您确实需要结束换行符,只需在awk脚本的末尾添加END{print ""}即可.

Linux相关问答推荐

AWK 命令根据另一列中相同的值获取列中的不同值

BASH:在curl输出的每一行添加前缀

在 bash 脚本中保持两个进程处于活动状态(并在死亡时重生它们)

Linux:用户态线程在执行系统调用时是否有更高的优先级?

如何使用 Linux 命令行跨子目录查找相似的文件名?

c++进程状态中的+是什么意思

如何使用正则表达式在 LINux 中查找具有不同结尾的多个文件?

为什么`__vfprintf_internal`(`stdio.h`中的`printfn`)强制`$rbp`在我的x86-64机器上向前跳转6313864字节?

Linux 如何将主机文件作为用户的输入并将其调用到脚本中

ftell 在文件描述符上?

为什么在 find 命令中使用 dirname 会 for each 匹配项提供点?

无法在 Android Studio 中清理项目

nvm:无法卸载当前活动的 node 版本

我可以在 Ubuntu 上使用 Homebrew 吗?

将 AWK 结果分配给变量

os.walk 没有隐藏文件夹

以 qsub 开头的 shell 脚本的参数

Postgresql -bash:psql:找不到命令

如何编写 Mono 守护程序

如何将 ISO8859-15 转换为 UTF8?