在Bash中将文件追加到文件中而不进行重定向(“ >>”)

时间:2019-11-12 02:16:06

标签: bash ansible-2.x

我有一个远程文件(实际上是两个),希望与另一个远程文件连接。我想在Ansible中使用命令模块,而不是shell模块。因此,我不能使用>>(或|&&等)。

问题是双重的:是否有一个模块(或组合)可以为我做到这一点?

如果没有的话,是否有bash命令可以为我执行此操作?

我从this question知道sed -i "$ a some text" somefile.txt将附加一行文本。

一个假设的命令来说明:

append -in /my/remote/file -in /my/remote/file2 -out /my/remote/dst

2 个答案:

答案 0 :(得分:3)

使用GNU sed,您可以使用就地编辑和r command

sed -i '$r file2' file

file的最后一行上将附加r的内容(file2为“读”)。

对于Ansible模块,我一点都不了解Ansible,但是blockinfile可能有用吗?

答案 1 :(得分:1)

不确定您的要求是否将所有文件合并到一个文件夹中。如果是这样,您可以使用以下代码

let keys = ["AAE", "TAE"];

let result = data.response.map(val => {
  keys.forEach(key => {
    if (val[key] && val[key].some(x => +x.amount <= 0)) {
      delete val[key];
    }
  });
  return val;
});
let keys = ["AAE", "TAE"];

let data = {
  "response": [{
      "countryId": {
        "id": "10050020025",
        "idScheme": "externalId"
      },
      "processedDateTime": "2019-11-07 05:39:09",
      "AAE": [{
        "amount": "1000",
        "currencyCode": "USD"
      }],
      "TAE": [{
        "amount": "0",
        "currencyCode": "USD"
      }]
    },
    {
      "countryId": {
        "id": "10291520071",
        "idScheme": "InternalId"
      },
      "processedDateTime": "2019-02-03 08:21:22",
      "AAE": [{
        "amount": "0",
        "currencyCode": "USD"
      }],
      "TAE": [{
        "amount": "-2001",
        "currencyCode": "USD"
      }]
    }
  ]
};

let result = data.response.map(val => {
  keys.forEach(key => {
    if (val[key] && val[key].some(x => +x.amount <= 0)) {
      delete val[key];
    }
  });
  return val;
});

console.log(result);