linux - 删除格式的所有两行的命令
问题描述
我想删除文件中以下格式的所有行(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
}
推荐阅读
- java - java中的二维数组
- git - git clone https://username@bitbucket.org/user/repo.git 某些文件夹内容到服务器上的 /public_html
- wildfly-10 - 如何在 Apiman (1.3.1.Final) 中覆盖 apiman.gateway-endpoint 默认属性值
- asp.net - 使用非英文文本或字符串显示用户名错误消息
- sql - Django查询涉及通用关系的模型
- formstack - Formstack API 参数
- c# - 添加 Azure AD 身份验证时出现 CORS 错误
- java - @Transactional 的范围
- c# - StoreServicesFeedbackLauncher 不工作
- c++ - 当我们在 C++ 中有关键字“auto”时,为什么需要多态性