gpt4 book ai didi

linux - awk 没有使用 bash 变量

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

我发现这个命令非常有效:

awk -v "/mallory:/,/end-config/ {next} 1" /filename.txt

它把所有内容都放在一个文件中,如下所示:

alice:
config option 1
config option 2
end-config

mallory: <--- Line gets deleted
config option 1 <--- Line gets deleted
config option 2 <--- Line gets deleted
end-config <--- Line gets deleted

bob:
config option 1
config option 2
end-config

并且只删除 mallory 的配置 block 。

所以现在我想在 bash 脚本中定义它,所以用户名可以是一个 bash 变量。我这样做了:

#!/bin/bash
username="mallory"
awk -v username="$username" "/username:/,/end-config/ {next} 1" /file.txt

猜猜看。它不会删除任何东西。输出与我开始使用的文件匹配。是什么赋予了?我正确导入了我的变量,对吧?

最佳答案

或者,你可以使用

#!/bin/bash
username="mallory"
awk -v "/${username}:/,/end-config/ {next} 1" /file.txt

请记住,在程序进入 AWK 之前,shell 将进行 shell 插值,因此 ${username} 将被替换为 mallory。为了更安全,你可能想使用

#!/bin/bash
username="mallory"
awk -v '/'"${username}"':/,/end-config/ {next} 1' /file.txt

这将确保 awk 程序不受任何其他 shell 解释的影响。

关于linux - awk 没有使用 bash 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6487997/

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