Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 使用linux命令删除包含搜索模式的行之前的行_Shell_Sed_Text Parsing - Fatal编程技术网

Shell 使用linux命令删除包含搜索模式的行之前的行

Shell 使用linux命令删除包含搜索模式的行之前的行,shell,sed,text-parsing,Shell,Sed,Text Parsing,我有一个包含单词和一些字符的yaml文件。 版本:“5.0.0” 迁移配置: - 名称:“SchemaMigrator” 订单:1 参数: 位置:“步骤1” 模式:“身份” - 版本:“5.1.0” 迁移配置: - 名称:“IdentityDataCleaner” 订单:1 参数: 模式:“身份” - 名称:“SchemaMigrator” 订单:2 参数: 位置:“步骤1” 模式:“身份” - 名称:“RegistryDataMigrator” 订单:6 参数: 架构:“嗯” 我只需要删除

我有一个包含单词和一些字符的yaml文件。

版本:“5.0.0”
迁移配置:
-
名称:“SchemaMigrator”
订单:1
参数:
位置:“步骤1”
模式:“身份”
-
版本:“5.1.0”
迁移配置:
-
名称:“IdentityDataCleaner”
订单:1
参数:
模式:“身份”
-
名称:“SchemaMigrator”
订单:2
参数:
位置:“步骤1”
模式:“身份”
-
名称:“RegistryDataMigrator”
订单:6
参数:
架构:“嗯”

我只需要删除
名称:“RegistryDataMigrator”
之前的破折号(-)。有很多破折号,我只想删除最后一个


有什么想法吗?

我刚从


这对我很有用

我刚刚从你的网站上找到了这个答案

这对我很有用

这可能适合您(GNU-sed):

使用
N;…;在整个文件长度上创建一个两行窗口;。。。;PD
方法,如果窗口的最后一行包含
RegistryDataMigrator
,则不打印窗口的第一行。这可能适用于您(GNU-sed):

使用
N;…;在整个文件长度上创建一个两行窗口;。。。;P方法,如果窗口的最后一行包含注册表数据迁移器,则不打印窗口的第一行

sed -i -n '/RegistryDataMigrator/{x;d;};1h;1!{x;p;};${x;p;}' /home/user1/Documents/migration.yaml
sed 'N;/RegistryDataMigrator[^\n]*$/!P;D' file