我很努力地找到一个sed命令来删除文本文件中不包含标点符号(任何类型)的所有行,而无需手动执行每一行。sed命令删除所有不包含标点符号的行
例如:
111.222.123.234
222.11.34.54
word # To remove
www.facebook.com
www.stackoverflow.com
another # To remove
[email protected]
是否这样的命令存在吗?
我很努力地找到一个sed命令来删除文本文件中不包含标点符号(任何类型)的所有行,而无需手动执行每一行。sed命令删除所有不包含标点符号的行
例如:
111.222.123.234
222.11.34.54
word # To remove
www.facebook.com
www.stackoverflow.com
another # To remove
[email protected]
是否这样的命令存在吗?
可以使用[:punct:]
字符类,它对应于
[!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~]
和否定它:
$ sed '/[[:punct:]]/!d' infile
111.222.123.234
222.11.34.54
www.facebook.com
www.stackoverflow.com
[email protected]
或者,而不是否定匹配,否定直接字符类:
sed '/[^[:punct:]]/d'
或者不打印任何东西,除非行确实包含一个标点符号:
sed -n '/[[:punct:]]/p'
或者使用grep而不使用sed:
grep '[[:punct:]]' infile
即使grep与该正则表达式工作:'grep'[[:punct:]]'文件名' –
@glennjackman而且可能会更快!介意我是否添加它? –
随意..... –
你真的尝试任何事情,这是非常基本的,而且容易被搜索到。 – 123