gpt4 book ai didi

grep - 外壳 : Find Matching Lines Across Many Files

转载 作者:行者123 更新时间:2023-12-02 01:57:32 25 4
gpt4 key购买 nike

我正在尝试使用 shell 脚本(以及“oneliner”)来查找大约 50 个文件之间的任何公共(public)行。编辑:注意我正在寻找出现在所有文件中的一行(行)

到目前为止,我已经尝试过 grep grep -v -x -f file1.sp * 它只是匹配所有其他文件中的文件内容。

我也尝试过 grep -v -x -f file1.sp file2.sp | grep -v -x -f - file3.sp | grep -v -x -f - file3.sp | grep -v -x -f - file3.sp grep -v -x -f - file4.sp | grep -v -x -f - file4.sp | grep -v -x -f - file4.sp grep -v -x -f - file5.sp 等...但我相信使用要搜索的文件作为 STD 进行搜索,而不是使用要匹配的模式。

有人知道如何使用 grep 或其他工具执行此操作吗?

我不介意运行是否需要一段时间,我必须向大约 500 个文件添加几行代码,并希望在每个文件中找到一个公共(public)行以便在“之后”插入(它们最初只是来自一个文件的 c&p,所以希望有一些共同点!)

感谢您的宝贵时间,

最佳答案

当我第一次读到这篇文章时,我以为你试图找到“任何共同点”。我认为这意味着“查找重复行”。如果是这种情况,以下内容就足够了:

sort *.sp | uniq -d
<小时/>

重新阅读您的问题后,您似乎实际上是在尝试查找“出现在所有文件中”的行。如果是这种情况,您将需要知道目录中的文件数量:

find . -type f -name "*.sp" | wc -l

如果返回数字 50,则可以像这样使用 awk:

WHINY_USERS=1 awk '{ array[$0]++ } END { for (i in array) if (array[i] == 50) print i }' *.sp
<小时/>

您可以合并此过程并编写如下一行:

WHINY_USERS=1 awk -v find=$(find . -type f -name "*.sp" | wc -l) '{ array[$0]++ } END { for (i in array) if (array[i] == find) print i }' *.sp

关于grep - 外壳 : Find Matching Lines Across Many Files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12246910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com