gpt4 book ai didi

bash - 搜索多个模式,其中包括单个文件中的双引号和两行上下的评论

转载 作者:行者123 更新时间:2023-12-04 00:48:59 25 4
gpt4 key购买 nike

我有一个非常大的文件,我需要在其中搜索 40 种形态。如果模式在文件中匹配,则需要在 2 行之前和 2 行之后进行注释。模式将如下所示:

1.create_rev -name "2x_8_PLL"
2.create_generated_rev -name "76_L"
3.create_rev -name "PCS_T0"
4.create_generated_rev -name "x544_P"

如果我需要搜索单个模式,那么我可以执行下面的 gvim 命令来完成任务。

:g/create_rev -name "2x_8_PLL"/-2,+2s/^/#

但是搜索模式更多的是 40 多个。如何搜索/grep 40 多种模式,以便我的预期输出如下所示:

#pp
#oo
create_rev -name "2x_8_PLL"
#aa
#bb
hh
#ii
#jj
create_generated_rev -name "76_L"
#cc
#dd
create_rev -name "PCS_T0"
#ee
#ff
gg

最佳答案

这可能对你有用(GNU grep 和 sed):

grep -A2 -B2 -nFf targets file |sed -En 's/^([0-9]+)-.*/\1s@^@#@/p' |sed -f - file

使用 grep 输出文件中与目标中的行匹配的行。匹配项将按行编号并包含匹配项前后两行。

grep 命令的输出行通过管道传输到 sed 并用作 sed 脚本的地址,该脚本会在每个匹配地址的开头插入一个 #

根据第一次 sed 调用的输出创建的 sed 脚本(通过 -f 命令行选项和使用来自管道的 stdin 的 -)是用于编辑源文件的第二次 sed 调用。

另一个只使用 sed 的解决方案:

sed -E 's/.*/\\#\\n.*\\n&\\n.*\\n#bb/' targets |
sed -Ee ':a;N;s/\n/&/4;Ta' -f - -e 'bc;:b;s/^([^#])/#\1/mg;s/^#//m3;:c;P;D' file

关于bash - 搜索多个模式,其中包括单个文件中的双引号和两行上下的评论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68213952/

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