我有一个文件,如下所示:
expression1
- expresson1.1
- expressoion1.2
expression2
-expression2.1
expression3
-expression3.1
-expression3.2
-expression3.3
我想要做的是,删除第 1.2、3.2 和 3.3 行,这样只保留不以减号开头的行,并保留下一行。
所以我尝试编写一个正则表达式来匹配以减号开头的每一行,其中前一行也以减号开头,然后删除它们。
到目前为止,还没有成功。任何提示将不胜感激。
最佳答案
如果您接受 awk 解决方案,请检查下面的一行:
awk '/^[^-]/{f=1;print;next;}{if(f && $0~/^-/){print;f=0;}}' yourFile
测试
kent$ echo "expression1
dquote> - expresson1.1
dquote> - expressoion1.2
dquote> expression2
dquote> -expression2.1
dquote> expression3
dquote> -expression3.1
dquote> -expression3.2
dquote> -expression3.3
dquote> "|awk '/^[^-]/{f=1;print;next;}{if(f && $0~/^-/){print;f=0;}}'
expression1
- expresson1.1
expression2
-expression2.1
expression3
-expression3.1
关于regex - 如果上一行以字符开头则匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12598414/