我有一个很大的文本文件,其中包含许多特殊字符,如"$!@%#$/“以及更多字符,如果文本文件中有任何特殊字符,我希望将该行删除。我只想保留A-Z和a-z字符。
如果这就是文件..。
!Somejunk)(^%
)%(&_
this
my_file
is
*(%%$
the
they're
file那唯一剩下的就是...
this
is
the
file使用linux命令行工具或bash脚本或python脚本的解决方案会更好,但任何可行的解决方案都可以!
发布于 2011-10-29 12:44:43
如果您只想保留包含字母字符的行(就像OP请求的那样),那么:
$ grep -v '[^a-zA-Z]' foo或者,如果您只想要英文字符:
$ grep -v '[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]' foo但是,如果您只想删除非字母字符,sed将完成此工作:
$ cat foo | sed 's/[^a-zA-Z]//g'或者,如果您只想删除二进制的、不可打印的数据,可以使用字符串:
$ strings foo发布于 2011-10-29 12:42:38
$ grep '^[[:alpha:]]\+$' << EOF
> !Somejunk)(^%
> )%(&_
> this
> my_file
> is
> *(%%$
> the
> they're
> file
> EOF
this
is
the
file发布于 2011-10-29 14:38:22
这似乎起作用了:
sed '/[^[:alpha:]]/d' source_filehttps://stackoverflow.com/questions/7937042
复制相似问题