我想匹配两个模式之间的一组数据并删除该数据和开始/结束模式,但仅限于模式的第一次出现。
所以如果这是测试数据:
PATTERNSTART
LINE1
LINE2
LINE3
PATTERNEND
PATTERNSTART
LINE1
LINE2
LINE3
PATTERNEND
TESTLINE1
TESTLINE2
TESTLINE3
PATTERNSTART
LINE1
LINE2
LINE3
PATTERNEND
Run Code Online (Sandbox Code Playgroud)
这将非常高兴地删除所有模式匹配和之间的行,但我只想删除第一个模式匹配和之间的行:
sed '/PATTERNSTART/,/PATTERNEND/d' testsed.txt
Run Code Online (Sandbox Code Playgroud)
输出:
TESTLINE1
TESTLINE2
TESTLINE3
Run Code Online (Sandbox Code Playgroud)
所需输出:
PATTERNSTART
LINE1
LINE2
LINE3
PATTERNEND
TESTLINE1
TESTLINE2
TESTLINE3
PATTERNSTART
LINE1
LINE2
LINE3
PATTERNEND
Run Code Online (Sandbox Code Playgroud)
有什么 sed 想法吗?
有谁知道我如何让 Terraform 更新现有的 KMS 密钥策略?
我已经创建了 KMS 密钥,但我有一个需要使用现有 KMS 密钥的临时 IAM 角色。我希望能够将这个“新”IAM 角色添加到现有的 KMS 密钥策略中。我可以看到使用 AWS 控制台可以做到这一点,但我看不到如何在 Terraform 中执行此操作。
我想这也可以使用 AWS CLI 工具实现,但我没有对此进行调查,因为我正在 Terraform 中构建环境并希望将其全部放在一个地方。
我应该指出,当前的 KMS 密钥用于加密 S3 上传和下载,并且各种 IAM 用户和角色已经可以访问当前密钥,因此创建新密钥只会为已经访问存储桶的人解决问题。
所以我有一个 docker 文件可以做到这一点:
ENV ENV ${ENV}
ENV SERVICE_NAME ${SERVICE_NAME}
USER app
ENV HOME=/home/app
COPY target /home/app/target
COPY entrypoint.sh /home/app
WORKDIR /home/app
ENTRYPOINT /usr/bin/chamber exec ${ENV}_${SERVICE_NAME} -r 1 -- ./entrypoint.sh
CMD java -jar -Dspring.profiles.active=docker target/my.jar
Run Code Online (Sandbox Code Playgroud)
因此 ENTRYPOINT 运行并从 AWS Parameter Store 中提取一些秘密,并将它们作为环境变量填充到 entrypoint.sh shell 中。然后 entrypoint.sh 对它们执行一些操作,创建一些文件等,并在其最后一行执行“exec $@”。
然后我期待 CMD 运行,但它只能看到运行“ExecStop=/usr/bin/docker stop app”的 systemd 服务文件。
systemd 服务文件执行此操作以启动容器:
ExecStart=/usr/bin/docker run --name app --memory-reservation=128m --memory=512m -e ENV=dev -e SERVICE_NAME=app 1234567890.dkr.ecr.eu-west-2.amazonaws.com/app:latest
Run Code Online (Sandbox Code Playgroud)
CMD怎么了?
我有一个shell命令,该命令调用MongoDB命令并产生BSON输出。然后,我想用jq解析该输出,因此我需要使用jq的tojson将BSON转换为JSON。
echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo
Run Code Online (Sandbox Code Playgroud)
我如何实现tojson就是这么简单:
echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo | jq '[.[]|tojson]'
Run Code Online (Sandbox Code Playgroud)
我还没有将jq放到服务器上,因为我必须证明它能在发布前起作用。
当我在在线演示中尝试。[] | tojson时,它不起作用,但是我不确定这是否是演示限制吗?
编辑
因此,我设法在运行mongodb的测试服务器上获得了“ jq”并尝试了以下操作:
echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo | ./jq '.members[] | {Server: .name, State: .stateStr}'
Run Code Online (Sandbox Code Playgroud)
我收到的错误是这样的:
parse error: Invalid numeric literal at line 1, column 8
Run Code Online (Sandbox Code Playgroud)
因此,似乎“ jq”无法解析replSetGetStatus中的数据。
同时,当我坐着挠头,等待变更管理死亡小队露面时,如果有人有任何想法,将不胜感激。
amazon-iam ×1
aws-kms ×1
bson ×1
docker ×1
dockerfile ×1
json ×1
mongodb ×1
sed ×1
terraform ×1