linux - 带 FS 的 Shell awk 命令

标签 linux bash shell awk

我用 awk 命令创建了一个脚本,内容如下:

myVar=$(awk -v FS="HAMMER=" 'NF>1{print $2}' TEST.properties)
echo "Appliances="$myVar

文件 TEST.properties 包含以下内容:

...
HAMMER=foo1,foo2
JACKHAMMER=foo3
...

上面的命令返回

foo1,foo2
foo3

我应该如何修改命令以仅查找 HAMMER 而不是包含 HAMMER 的每个单词?

最佳答案

在字段分隔符 FS 中使用 ^ 行的开头:

awk -v FS="^HAMMER=" 'NF>1{print $2}'

但是如果你有key=value构造,你最好使用:

awk -v FS='[=,]' '$1=="HAMMER"{for(i=2;i<=NF;i++} print $i}'

字段分隔符设置为 =,。如果第一个参数是您的关键字,则打印该行的所有其他参数。

关于linux - 带 FS 的 Shell awk 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41016437/

相关文章:

bash - 从 MacPorts Mavericks 安装时找不到 GDB 命令

linux - Bash 脚本等待依赖的命令进程

PHP异步读取(shell脚本)

c - 动态加载 (DL) 库和第一条指令

linux - nodejs v5.10.1 无法再获取我的主机地址?

python - 缺少 python bz2 模块

ruby -/usr/bin/env : ln: Too many levels of symbolic links

macos - 在 Mac 上,在 shell 中,我如何知道我有一个 GUI?

linux - 如何使用top命令显示超过一定限制的CPU使用率?

linux - 将一个文件列表中的文件列表复制到另一个文件夹