Linux sed - 查找其中不带空格的通配符字符串

Linux sed - 查找其中不带空格的通配符字符串

sed命令可以使用句号来查找通配符符号,等等.*检索线路上的所有内容。

是否可以说我希望除了(在这种情况下)空格之外的任何符号?所以:

FredSmith- 将是有效的

Fred&Ginger- 将是有效的

6times7- 将是有效的

One too many- 会不是有效

答案1

是的,这是可能的。

echo "One too many" | sed -n '/^[^[:space:]]*$/p'

上面的命令没有返回任何内容


echo "FredSmith" | sed -n '/^[^[:space:]]*$/p'
FredSmith

虽然后者打印FredSmith


  • [:space:]- 空格字符的 POSIX 字符类

  • /^[^[:space:]]*$/p- 表示“如果仅包含非空格字符则打印匹配[^[:space:]]”(使用否定的字符类)

答案2

使用否定字符类([^ ][^[:space:]]),如 Roman 所示,或反转匹配,如下所示。哪一种更好取决于周围的结构。

$ cat foo.txt
with space
spaceless
$ sed '/ /d'  < foo.txt     # (d)elete the line on match
spaceless
$ sed -n '/ /!p' < foo.txt  # (p)rint if the pattern does not (!) match
spaceless

相关内容