我有一个带单词和一些字符的yaml文件。
version: "5.0.0"
migratorConfigs:
-
name: "SchemaMigrator"
order: 1
parameters:
location: "step1"
schema: "identity"
-
version: "5.1.0"
migratorConfigs:
-
name: "IdentityDataCleaner"
order: 1
parameters:
schema: "identity"
-
name: "SchemaMigrator"
order: 2
parameters:
location: "step1"
schema: "identity"
-
name: "RegistryDataMigrator"
order: 6
parameters:
schema: "um"
我只需要删除name: "RegistryDataMigrator"
之前的破折号(-)。有很多破折号,我只想删除最后一个。
有什么想法吗?
答案 0 :(得分:3)
我刚刚从
找到了这个答案http://www.theunixschool.com/2012/06/sed-25-examples-to-delete-line-or.html
sed -i -n '/RegistryDataMigrator/{x;d;};1h;1!{x;p;};${x;p;}' /home/user1/Documents/migration.yaml
对我有用!
答案 1 :(得分:2)
这可能对您有用(GNU sed):
sed 'N;/RegistryDataMigrator[^\n]*$/!P;D' file
使用N;...;P;D
方法在文件的整个长度上创建两行窗口,并且如果窗口的最后一行包含RegistryDataMigrator
,则不打印窗口的第一行。