如何使用 'tr' 仅查找和替换 ---

How to use 'tr' to find and replace only ---

所以,我有一个命令 (kustomize build) 的输出,我想将输出中的 --- 转换为 ###。例如:

$ kustomize build
apiVersion: extensions/v1
kind: Ingress
metadata: 
  labels:
    app: hello-world
---
apiVersion: v1
kind: Service
metadata:
  name: hello-world
spec:
  ports:
  - name: service
    port: 443
    targetPort: 8443
  selector:
    app: hello-world
  type: NodePort

我想将其更改为:

apiVersion: extensions/v1
kind: Ingress
metadata: 
  labels:
    app: hello-world
###
apiVersion: v1
kind: Service
metadata:
  name: hello-world
spec:
  ports:
  - name: service
    port: 443
    targetPort: 8443
  selector:
    app: hello-world
  type: NodePort

我尝试了 $ kustomize build | tr '\---' '#',但它甚至将单个 '-' 的每个实例都替换为 '#'。我什至尝试了 tr '[-]{3}' '#' 但即使这样也无济于事。我该怎么做呢?

tr 仅翻译单个字符(如果指定,则删除它们)。

你需要使用的是 "stream editor" sed 可以替换字符组:

sed 's/---/###/g'