bash - 在 Bash 中包含标点符号的输出行
问题描述
给定一个文本文件,我想输出至少包含以下标点之一的行:! . ?
in Bash.
我已经尝试过这样做,.
但到目前为止我还没有成功。
sed '/^\.*$/d' file
sed '/^\.+$/d' file
sed '/^[.]/d' file
你能帮我解决这个问题吗?非常感谢您的帮助!
解决方案
删除除带有!
.
or的所有行?
:
sed '/[!.?]/!d'
或者只输出至少包含这些字符之一的行:
sed -n '/[!.?]/p'
关于你的尝试:
sed '/^\.*$/d' file
^
and匹配一行的$
开头和结尾。它会删除所有包含零个或多个点的行,并且只删除点。
sed '/^\.+$/d' file
同上,但有一个或多个。它会删除所有具有一个或多个点且只有点的行。
sed '/^[.]/d' file
这将删除所有以单个点开头的行。[
and指定 OR 关系,]
例如[.?]
- 将是点或问号。里面的一个字符[
]
等于那个字符。
推荐阅读
- python - sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedColumn) 列不存在
- java - 如何使用二维数组中的数据填充 TableView?
- javascript - FormData 在 Ajax 和 Wordpress 表单中返回未定义
- android - ImageButton 三角形背景
- git - 命令“git lfs pull origin”返回状态码1;stderr: git: 'lfs' 不是 git 命令
- postgresql - 如何修复此错误:无法打开文件“pg_wal/00000003.history”,或者当 PostgreSQL 磁盘空间不足时*不*做什么
- android - 如何正确保存滚动视图的滚动
- javascript - 为什么 nginx sub_filter 不能与 proxy_pass 一起使用?
- mysql - SQL存在2张表
- html - 如何使用 xpath 获取特定标签内的所有标签