使用 sed 删除名称不同的多个案例

使用 sed 删除名称不同的多个案例

我有一个 ansible 库存,我需要删除所有以 开头的案例site2-

例如,我有一个包含以下群组的列表:

[site2-static-web]
site2-ansible
site2-accounts
site2-admin
site2-analytics
site2-audit
site2-botruntime
site2-campaigns
site2-config
site2-coupons
site2-edge
site2-minio
site2-permissions
site2-registry
site2-surveys
site2-websockets
site2-amc-server
site2-static-web
site2-elasticsearch
site2-logstash
site2-kibana
site2-keycloak
site2-pgsql
site2-mysql
site2-rabbitmq
site2-redis
site2-zipkin

我尝试过,sed -i.bak 's/site2-*///g' mmp_default但我只能将头发site2剪掉,但头发末端还留着。

site2-ansible
site2-accounts

成为:

ansible
accounts

我怎样才能正确地做到这一点?

答案1

$ sed '/ansible\|accounts/ !d ; s/site2-//' toto
ansible
accounts
$ 

所以我首先选择匹配的行,这些行由 \| 分隔,然后我才删除无用的单词“site2-”。如果需要,您仍然可以添加 -i.bak

相关内容