gpt4 book ai didi

bash - 使用 grep (在 shell 脚本中)每次匹配仅显示一个文件

转载 作者:行者123 更新时间:2023-12-02 04:15:00 26 4
gpt4 key购买 nike

如何将 grep 的输出限制为每个文件仅一行?

(因为这是 shellscript 函数的一部分,所以我可以使用所有内容,但我太笨了,无法弄清楚如何以正确的方式通过管道传输特定部分。)

我试图编写的函数基本上是“给定一个字符串,显示每个文件(在此目录和所有子目录中),其中包含该文件并将这些文件的列表显示为可点击的链接”

(顺便说一句。你能提示我一些脚本/命令吗?它们可以执行类似的操作?)

如果您有兴趣:.bashrc 中的函数如下:(并且应该这样使用:“where foobar”)

function where(){
grep -rHoiIm1 "$@" | cut -d":" -f1-1 | asURL
}

function asURL() {
PREFIX="file://$(pwd)/";
sed "s*^*$PREFIX*" |
sed 's/ /%20/g';
}

最佳答案

如果您只对匹配文件的路径感兴趣,请使用-l/--files-with-matches选项:

function where(){
grep -riIl "$@" | asURL
}

请注意,我省略了几个在使用 -l 后不再适用的选项。

顺便说一句:虽然您的 asUrl() 函数可以在简单的情况下工作,但它并不完全可靠,并且可能会导致无效的 URL。除此之外,没有理由两次调用sed;只需将两个 s 调用串在一个脚本中,并用 ; 分隔。

关于bash - 使用 grep (在 shell 脚本中)每次匹配仅显示一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34347688/

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