首页 > 解决方案 > 删除格式的所有两行的命令

问题描述

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

anything....{
}

示例输入文件:

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

预期的输出文件:

abc {
a
}
xyz {
so
}

标签: linuxshellsed

解决方案


如果有帮助,我已经完成了这个(通过 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
}

推荐阅读