怎样才能删除英文字母或数字,但保留中文的行呢?每个文档大约有10,000行。
示例输入:
1
Lorem ipsum dolor sit amet
古老的故事
12345
consectetur adipiscing elit
567
8910
美丽的歌谣
美女与野兽示例输出:
1
古老的故事
12345
567
8910
美丽的歌谣
美女与野兽由于某种原因,汉字在使用sed时会得到匹配。给定以下命令,请注意,在输出中,"1“下的汉字丢失。我不知道为什么。但是我得留着它们。
sed '/[a-zA-Z]/d' file输入
1
很久很久以前
Once upon a time
2
在一个遥远地方
in a faraway land电流输出
1
2
在一个遥远地方发布于 2017-01-29 19:10:57
这是一种解决方案,它既不能去掉中英两种字符的行,也可以保留不含英文字母的行(例如,保留由分隔符、换行符等组成的行)。
awk '/[^\x00-\x7F]/ || !/[A-Za-x]/'我并不是awk的专家(任何建设性的建议都是受欢迎的),但是这个表达应该保持这样的行文:
发布于 2017-01-29 07:39:32
如果你想在Javascript中做这件事,试试这个。
var myString = '1 Lorem ipsum dolor sit amet 古老的故事 12345';
myString = myString.replace ( /[a-zA-Z]/g, '' );
console.log(myString);不过要照顾好多余的空间。
发布于 2017-01-29 08:23:05
为什么不将grep的反向匹配标志转换为临时文件呢?
grep -v '[A-Za-z]' file.txt > tmp && mv tmp file.txthttps://stackoverflow.com/questions/41918527
复制相似问题