小编use*_*993的帖子

将变量传递给 AWK 在循环内不起作用

我有这个 awk 语句,它读取一个 YAML 文件并输出一个特定的值。我需要在一个循环中循环这个 awk,我从一个值列表中读取一个键值并将该键传递给 awk。

YAML 文件具有以下结构:

abc:
  NAME: Bob
  OCCUPATION: Technician
def:
  NAME: Jane
  OCCUPATION: Engineer
Run Code Online (Sandbox Code Playgroud)

说我想关键abc OCCUPATION的价值TECHNICIAN,通过谷歌搜索我设法建立一个awk语句,让我想要什么

> awk 'BEGIN{OFS=""} /^[^ ]/{ f=/^abc:/; next } f{ if (sub(/:$/,"")) abc=$2; else print abc,$1 $2}' test.yml| grep "OCCUPATION:" | cut -d':' -f2
Technician
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用这个循环,将 -v 选项传递给 awk 似乎没有任何意义:

items="abc,def"
for item in $(echo $items | sed "s/,/ /g"); 
do
 echo $item;
 awk -v name="$item" 'BEGIN{OFS=""} /^[^ ]/{ f=/^\name:/; next } f{ if (sub(/:$/,"")) name=$2; …
Run Code Online (Sandbox Code Playgroud)

bash awk perl text-processing yaml

4
推荐指数
2
解决办法
333
查看次数

标签 统计

awk ×1

bash ×1

perl ×1

text-processing ×1

yaml ×1