删除所有英文文本并保留阿拉伯文本

Lyn*_*nob 5 grep perl csv text-processing

这个问题很像这样。我只需要稍微修改一下。

我有一个看起来像这样的 csv 文件

y(document).ready(function($) {     $('#wp_mep_2').mediaelementplayer({         m:1                 ,features: ['playpause','current','progress','duration','volume','tracks','fullscreen']         ,audioWidth:250,audioHeight:30  }); });","I'm not"
"100","??????                                                                                                                           00:0000:0000:00  jQuery(document).ready(function($) {   $('#wp_mep_1').mediaelementplayer({         m:1                 ,features: ['playpause','current','progress','duration','volume','tracks','fullscreen']         ,audioWidth:250,audioHeight:30  }); });","I"
"101","???","As"
"102","??","Anything"
"103","???","Since"
"104","???","So"
"105","????","One"
"106","???","Very"
"107","?????","You can"
"108","????","You have"
"109","?????","Man"
"110","????","Seems"
"111","???","Both"
"112","???","I have"
"113","???","Oh"
"114","????","Do"
"115","????","Sir"
Run Code Online (Sandbox Code Playgroud)

我想删除除阿拉伯语文本之外的所有内容,我可以使用逗号分隔的单词。grep 或 Perl 能做到吗?如果 grep 可以做到,我会感到惊讶。我不知道如何检测没有英文字符,否则我会使用上一个问题作为参考。

αғs*_*нιη 7

您可以使用tr

tr -s '[\0-\200]' ' ' < file
Run Code Online (Sandbox Code Playgroud)

用单个空格替换从 ASCII-code=(0) 10到 ASCII-code=(128) 10 的所有字符。

\nnn是八进制值的字符nnn。(128)十进制=(200)八进制

[\0-\200]像 alpha 类一样,[A-Z]它是一个包含所有ASCII 控制字符的字符类。

或使用:

tr -s '[ -~]' ' ' < file
Run Code Online (Sandbox Code Playgroud)

此命令与tr -s '[\40-\176]' ' ' < file替换空格和字符之间的所有 ASCII 字符的命令相同~。请参阅ASCII 控制字符

输出:

 ?????? ??? ?? ??? ??? ???? ??? ????? ???? ????? ???? ??? ??? ??? ???? ???? 
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用该类和awk命令:

awk '{gsub(/[\0-\200]/, "");print}'  file
??????
???
??
???
???
????
???
?????
????
?????
????
???
???
???
????
????
Run Code Online (Sandbox Code Playgroud)

您可以对grep命令使用相同的方法:

grep -Po '[^ -~]+' file
grep -Po '[^\0-\200]+' file
grep -Po '[^\x0-\x80]+' file  #used HEX code
Run Code Online (Sandbox Code Playgroud)