gpt4 book ai didi

linux - 如何在 SED 或 AWK 中使用 if, else?

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

我必须在文件的特定部分下插入几行。为此,我需要编写一个 shell 脚本。问题是文件中可能存在也可能不存在特定部分。如果文件中不存在 [oslo_concurrency] 部分,则应首先在文件末尾插入 [oslo_concurrency],并在 [oslo_concurrency] 部分下方添加行 'lock_path =/var/lock/cinder'。如果 [oslo_concurrency] 部分存在,它应该只是 [oslo_concurrency] 部分下方的行 'lock_path =/var/lock/cinder'。

我能否使用 SED 或 AWK 完成此任务,如果不能,那最简单的方法是什么?请指导我完成这个场景。

输出文件看起来像。

[oslo_concurrency]
lock_path = /var/lock/cinder

最佳答案

如果它是第一行之后的单行节标题,您可以使用 sed 替换:

file: test.txt

test data 1
test data 2
[oslo_concurrency]
test data 3
test data 4
test data 5
test data 6
test data 7
test data 8
test data 9
test data 10


function print_header() {
cat << EOF
lock_path = /var/lock/cinder
$(date '+%B %d, %Y @ ~ %r') ID:$RANDOM
EOF
}

回显“$(print_header)” | sed '/\[oslo_concurrency\]/r/dev/stdin' test.txt

结果:

    test data 1
test data 2
[oslo_concurrency]
lock_path = /var/lock/cinder
December 05, 2015 @ ~ 01:31:57 AM ID:3115
test data 3
test data 4
test data 5
test data 6
test data 7
test data 8
test data 9
test data 10

关于linux - 如何在 SED 或 AWK 中使用 if, else?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34099355/

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