我有一个包含文件名的文件,看起来像这样
“aaa.ext”
“ABC”
“a1a.ext”
“东亚银行”
“PAT”
“FF#!”
“toto€ .pdf”
“...”
我需要提取包含标准英语字母数字(A-Z,a-z,0-9,_和。)和其他字符的行
关于上面的例子,输出应该像
béa(包含é而不是e)
pàt(包含à而不是a)
“FF#!”
“toto€ .pdf”
有什么想法吗?
提前致谢
答案 0 :(得分:1)
尝试
LC_ALL=C.UTF-8 grep '[A-Za-z0-9_.]' yourFile |
LC_ALL=C.UTF-8 grep '[^A-Za-z0-9_.]'
也可以写成
(export LC_ALL=C.UTF-8; grep -P '[\w.]' yourFile | grep -P '[^\w.]')
LC_ALL=C.UTF-8
确保A-Z
仅匹配标准英文字母而非é
之类的字母。
注意:在Unicode中é
可以编码为真实é
或e
与´
相结合。如果您的文件包含以下两行(不带注释)
é # single character
é # combination of "e" and "´"
然后上面的命令将返回
é # combination of "e" and "´"
问题有点奇特,不应该造成太大麻烦。