[英]How can i add a block of line after a specific word or line in a file using bash script?
这是文件内容
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
我需要在上面文件内容中的第二行的单词上下文之后添加以下代码块
- context:
cluster: kubernetes
namespace: myco-dev
user: kubernetes-admin
name: myco/DEV
- context:
cluster: kubernetes
namespace: myco-ua
user: kubernetes-admin
name: myco/UA
所以最终的输出应该是这样的
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
- context:
cluster: kubernetes
user: kubernetes-admin
namespace: myco-dev
name: myco/DEV
- context:
cluster: kubernetes
user: kubernetes-admin
namespace: myco-ua
name: myco/UA
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
我不知道 YAML,根据一些评论,数据来自该类型。 假设数据来自文件,比如说文件 1 和文件 2。 我们可以使用 ed。 (同样我不知道 YAML 或数据来自哪里)
file1 的内容是
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
file2 的内容是
- context:
cluster: kubernetes
namespace: myco-dev
user: kubernetes-admin
name: myco/DEV
- context:
cluster: kubernetes
namespace: myco-ua
user: kubernetes-admin
name: myco/UA
将 file2 的内容插入到 file1 中。
printf '%s\n' '2 r file2' w | ed -s file1
检出file1的内容
cat file1
name: kubernetes
contexts:
- context:
cluster: kubernetes
namespace: myco-dev
user: kubernetes-admin
name: myco/DEV
- context:
cluster: kubernetes
namespace: myco-ua
user: kubernetes-admin
name: myco/UA
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
数字 2 是地址又名行号
r afaik 被读取,这意味着读取 file2
w 表示写入。
看
man(1p) ed
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.