这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