gpt4 book ai didi

linux - 找到一个模式并修改下一行,而不修改文件中的其他内容。最好是基于 linux 的命令(sed、awk 等)

转载 作者:太空狗 更新时间:2023-10-29 11:44:34 25 4
gpt4 key购买 nike

我有一个看起来像这样的文件:

# Hello, welcome to the world
# Trying to modify XXXXXX
# Some more random text

poly RANDOM LAYER{
20 25
18 2
1 5
1 2
5 6
}


poly RANDOM LAYER{
30 50
14 25
15 25
15 26
15 26
15 27
}

我想增加 poly RANDOM 层下一行的值,比如将 10 添加到第一个数字 (20+10=30) 并将 20 添加到下一个数字 (25+20=45)。其余内容应该是一样的:这应该在 poly RANDOM LAYER 之后立即对所有行完成

输出应该是这样的:

# Hello, welcome to the world
# Trying to modify XXXXXX
# Some more random text

poly RANDOM LAYER{
*30 45*
18 2
1 5
1 2
5 6
}


poly RANDOM LAYER{
*40 60*
14 25
15 25
15 26
15 26
15 27
}

最佳答案

如果特定的前导空格总是 4 个字符:

$ awk 'f{$1="    "$1+10; $2+=20; f=0} /RANDOM/{f=1} 1' file
# Hello, welcome to the world
# Trying to modify XXXXXX
# Some more random text

poly RANDOM LAYER{
30 45
18 2
1 5
1 2
5 6
}


poly RANDOM LAYER{
40 70
14 25
15 25
15 26
15 26
15 27
}

否则使用:

$ awk 'f{fmt=$0; gsub(/[^[:space:]]+/,"%s",fmt); $0=sprintf(fmt,$1+10,$2+20); f=0} /RANDOM/{f=1} 1' file

因为这只会在您的输出中重现您输入中的前导、尾随或字段间空白。

关于linux - 找到一个模式并修改下一行,而不修改文件中的其他内容。最好是基于 linux 的命令(sed、awk 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330755/

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