我正在合并几个不同的Linux内核分支,但是我已经发现在从几个Kconfig文件的git diff添加更改之后,我的基本源代码已经在另一个目录中有了一些配置#s; s Kconfig文件。
所以,我正在寻找类似于此的结果/输出:
找到。 -name .git -prune -o -type f(-name' Kconfig *') - print0 | xargs -0 grep --color -n" $ @"
...除了搜索在该命令末尾输入的已知单词或字符串之外,我需要在不知道字符串的情况下在不同的Kconfig文件中查找重复项。
例如:我将配置ARCH_VEXPRESS 添加到arch / arm / Kconfig,更像是它,它位于第二个分支中......因为它在我的基地分支失踪了。我后来发现有很多重复,因为它已经存在于arch / vexpress / Kconfig或其他Kconfig中。
那么,有没有人知道我可以用来搜索所有Kconfig *文件的命令或bash脚本,以获得" config $ @ "的重复项。 没有输入$ @ STRING ???
我希望它能输出/显示文件名/位置,重复的字符串,最好是它们都位于的行号。
答案 0 :(得分:2)
find . -name .git -prune -o -type f -name 'Kconfig' -print0 |
xargs -0 awk '/^config/ { count[$2]++; files[$2] = files[$2] " " FILENAME":"FNR; }
END { for (keyword in count) {
if (count[keyword] > 1) { print keyword files[keyword] }
}
}'