awk使用for循环读取和写入一组文件

时间:2017-01-23 17:32:59

标签: bash awk

我正在阅读并尝试将更改附加到一组文件,但它没有按预期工作。输出完美打印但不附加到文件集中。

"frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  }

请帮助。

1 个答案:

答案 0 :(得分:1)

假设当你说append the changes时你的意思是apply the changes时,这就是你用循环和任何awk做的方式:

while IFS= read -r i; do
  awk '/\[groups/{a=1;print;next} /^\[/{a=0}a && /=/{$0=$0",raspberry"}7' "$i" > "$i.tmp" &&
  mv "$i.tmp" "$i"
done < file

但你的awk命令可以更清晰,更简单,请参阅https://stackoverflow.com/a/41811423/1745001,如果你有GNU awk和GNU xargs你不需要循环或tmp文件:

xargs -d $'\n' < file awk -i inplace '/\[/{f=/groups/} f{if (NF) $0=$0",raspberry"} 1'