我正在尝试实现一个自动化过程,我的工作流程会自动生成一个文件,该文件根据时间戳和公钥命名。
文件名示例:UTC--2022-03-07T10-53-08.532008168Z--84e9ed8d078f2bdc71e4ca9a322d2f4222c9b7b7
我确切需要做的是cat UTC--2022-03-07T10-53-08.532008168Z--84e9ed8d078f2bdc71e4ca9a322d2f4222c9b7b7
查看文件的内容并解析文件提供的 JSON 结构中的特定属性。
需要确切的用例-在 cat- 之后:{"address":"84e9ed8d078f2bdc71e4ca9a322d2f4222c9b7b7","crypto":{"cipher":"aes-128-ctr","ciphertext":"a14e5429363ce09903aeccf1afa9ea49a02a4974e0fa032d14f7077ceae21588","cipherparams":{"iv":"a214bcb73a74554bb9be59df158c4d4e"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"d933d92a667eec528299c354e1efe0da730cea2a53a082dbeafc9ed70ca40a71"},"mac":"803325a434a6541c5d93d15f11762d2907e1da1c6520fc33632934565822733d"},"id":"694ca50f-3ae9-4520-94f9-a80003c3f95f","version":3}
我需要从 JSON 中获取value
受影响的内容,address
并且我需要从 docker 命令执行整个过程。
有什么方法可以检测文件是否每次都已创建,以便获取其中的地址并将其放入剪贴板(只需简单的复制 cmd)? PS:文件名是由另一个自动化过程生成的,我没有确切的文件名来查找它,但它有一个特定的目录。
提前致谢 !
答案1
由于您告知该文件是特定目录中唯一可用的文件,并且考虑到 Michal 的评论,您会得到如下信息:
cat /root/node/keystore/* | jq -r '.address'
该命令cat /root/node/keystore/*
捕获目录中找到的唯一文件,然后将其通过管道传输到jq
Michal 提供的命令。
如果您需要直接在 Docker 容器内的文件上运行命令,请cat
在容器内像这样运行:
docker exec <containername/ID> cat /root/node/keystore/* 2> /dev/null | jq -r '.address'