gpt4 book ai didi

linux - 从 block 中删除一行

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:36 25 4
gpt4 key购买 nike

我想搜索一个字符串并将其从 block 中删除。我尝试使用 sedawk 但我无法弄清楚。

让 block 像这样:

[MAIN]
one=[1]
two=[2]
three=[3]
three=[4]
three=[5]

[sub]
one=[1]
two=[2]
three=[3]
three=[4]
three=[5]

我的需要是进入 Main block 并通过搜索相同的内容删除 two=[4]

最佳答案

Perl 版本:

% perl -pe'BEGIN { $/ = "\n\n" } if (/\A\[MAIN\]/) { s/^three=\[4\]\n//m }' file

将输出:

[MAIN]
one=[1]
two=[2]
two=[3]
three=[5]

[sub]
one=[1]
two=[2]
three=[3]
three=[4]
three=[5]

顺便说一句,如果这是 INI 格式,您可能还想使用更合适的 INI 解析器。例如,您可以使用 Config::IOD 来执行此操作。 :

use Config::IOD;
my $iod = Config::IOD->new;
my $doc = $iod->read_file("file");
$doc->delete_key({
all => 1,
cond => sub{
my ($self, %args) = @_;
return 1 if $args{raw_value} =~ /4/;
},
"MAIN","three"
);
print $doc->as_string;

如果键值包含“4”,上面的代码将删除“MAIN”部分下的所有“三个”键行。您可以根据需要调整代码。

关于linux - 从 block 中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33012070/

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