gpt4 book ai didi

linux - 如何创建具有可变参数/参数的 bash 函数以 grep 多个关键字/标签

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:35 24 4
gpt4 key购买 nike

我正在使用 :!grep "tag1"文件名 | grep "tag2"文件名 | vim 中的 grep -n "tag3 or more"filename 命令在一个大文件中根据标签(代码段顶部的简单注释)搜索我的代码片段,类似于 firefox 的标签功能。我使用片段来记住棘手的事情。

每次写出来都很痛苦。我想做一个别名,或者函数来做这样的事情:

:!greptag tag1 tag2 ... tag39

它应该搜索当前文档并返回带有所有标签的行。

Vim 设置为交互式 shell 模式,以便它可以解析我的 bashrc 以获取别名/函数。

set shellcmdflag=-ic "lets vim use bashrc

我如何在 bash 中构造一个允许这样的可变参数的函数?

最佳答案

你也可以使用 sed:

sed e '/tag1/!d;/tag2/!d;.../tagN/!d' filename

/tag1/! 命令是一个地址前缀,它告诉 sed 仅在该行包含 tag1 时才执行该命令。我们执行的命令是“d”,删除该行。

函数(在 .bashrc 中)将是:

greptags () {
local filename="$1"
shift
sed "$filename" -e "$(echo "$@" | sed -e 's,\([^ ]*\) *,/\1/\!d;,g')"
}

请注意,我们使用另一个 sed 命令将参数解析为最终的 sed 命令列表。基本上,对于每个单词(没有空格),我们删除其后面的空格并将其放入 /tagN/!d; 命令形式。

并称它为:

greptags filename tag1 tag2 tag3 tag4

希望这有帮助 =)

关于linux - 如何创建具有可变参数/参数的 bash 函数以 grep 多个关键字/标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735315/

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