首页 > 解决方案 > 在 Bash 中包含标点符号的输出行

问题描述

给定一个文本文件,我想输出至少包含以下标点之一的行:! . ?in Bash.

我已经尝试过这样做,.但到目前为止我还没有成功。

sed '/^\.*$/d' file
sed '/^\.+$/d' file
sed '/^[.]/d' file

你能帮我解决这个问题吗?非常感谢您的帮助!

标签: bashawksedgrep

解决方案


删除除带有! .or的所有行?

sed '/[!.?]/!d'

或者只输出至少包含这些字符之一的行:

sed -n '/[!.?]/p'

关于你的尝试:

sed '/^\.*$/d' file

^and匹配一行的$开头和结尾。它会删除所有包含零个或多个点的行,并且只删除点。

sed '/^\.+$/d' file

同上,但有一个或多个。它会删除所有具有一个或多个点且只有点的行。

sed '/^[.]/d' file

这将删除所有以单个点开头的行。[and指定 OR 关系,]例如[.?]- 将是点或问号。里面的一个字符[ ]等于那个字符。


推荐阅读