将命令输出保存到没有时间戳信息的文件中

save command output to a file without timestamp info

如果我在我的终端上 运行 这个命令 (https://hub.getdbt.com/dbt-labs/codegen/latest/):

dbt run-operation generate_model_yaml --args "{\"model_name\": "bookings"}"          

我得到如下所示的输出:

12:53:32  Running with dbt=1.0.1
12:53:34  version: 2

models:
  - name: bookings
    description: ""
    columns:
      - name: booking_id
        description: ""

      - name: masterclient_id
        description: ""

我想将它保存到一个文件中。如果我这样做:

dbt run-operation generate_model_yaml --args "{\"model_name\": "bookings"}"  > test.yml     

这也被保存到输出中:

12:53:32  Running with dbt=1.0.1
12:53:34  

虽然我想要的输出是这样的:

version: 2

models:
  - name: bookings
    description: ""
    columns:
      - name: booking_id
        description: ""

      - name: masterclient_id
        description: ""

如何去掉开头的额外时间戳信息,然后将剩余的输出保存到文件中?

如果您确信输出始终由这两个确切的时间戳构成,您可以:

dbt run-operation generate_model_yaml \
  --args "{\"model_name\": \"bookings\"}" \
  | tail -n +2 | sed '1 s/[0-9:]* *//'

tail -n +2 删除第一行。 sed 命令从第二行(现在是第一行)中删除时间戳和后面的空格。

快速浏览 the relevant dbt docs 产量

  1. The YAML for a base model will be logged to the command line

因此,您似乎无法指示 dbt 直接输出 YAML 数据 而没有 日志记录时间戳。