命令删除格式的所有两行



我想删除以下格式的所有出现在文件中的格式(2行(。那是{和第二行只有一个字符}结尾的第一行。如果发生这种格式n次数,我想删除那些2n行。

anything....{
}

示例输入文件:

abc {
a
}
bcd {
}
ecd xyz {
}
pqr {
    stu {
    }
}
xyz {
so
}

预期输出文件:

abc {
a
}
xyz {
so
}

我已经完成了此操作(通过shell脚本(,如果有帮助:stack.sh

#!/bin/bash
sed 's#} #}n#g' source.txt> file.tmp
grep -o '.*{ [a-z]* }' file.tmp | sed 's#{ #{n#g' | sed 's#}#n}#g' > result.txt
rm file.tmp

输出

[root@localhost stack]# cat source.txt
abc {
a
}
bcd {
}
ecd {
}
xyz {
so
}
[root@localhost stack]# bash stack.sh
[root@localhost stack]# cat result.txt
abc {
a
}
xyz {
so
}

最新更新