首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Bash或Regex删除英文字符?

如何使用Bash或Regex删除英文字符?
EN

Stack Overflow用户
提问于 2017-01-29 07:15:44
回答 3查看 1.2K关注 0票数 1

怎样才能删除英文字母或数字,但保留中文的行呢?每个文档大约有10,000行。

示例输入:

代码语言:javascript
复制
1
Lorem ipsum dolor sit amet
古老的故事
12345


consectetur adipiscing elit
567
8910
美丽的歌谣
美女与野兽

示例输出:

代码语言:javascript
复制
1
古老的故事
12345


567
8910
美丽的歌谣
美女与野兽

由于某种原因,汉字在使用sed时会得到匹配。给定以下命令,请注意,在输出中,"1“下的汉字丢失。我不知道为什么。但是我得留着它们。

代码语言:javascript
复制
sed '/[a-zA-Z]/d' file

输入

代码语言:javascript
复制
 1
 很久很久以前
 Once upon a time

 2
 在一个遥远地方
 in a faraway land

电流输出

代码语言:javascript
复制
1

2
在一个遥远地方
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-29 19:10:57

这是一种解决方案,它既不能去掉中英两种字符的行,也可以保留不含英文字母的行(例如,保留由分隔符、换行符等组成的行)。

代码语言:javascript
复制
awk '/[^\x00-\x7F]/ || !/[A-Za-x]/'

我并不是awk的专家(任何建设性的建议都是受欢迎的),但是这个表达应该保持这样的行文:

  1. 包含任何不在ASCII范围内的字符
  2. 不包含字母表中的字母
票数 0
EN

Stack Overflow用户

发布于 2017-01-29 07:39:32

如果你想在Javascript中做这件事,试试这个。

代码语言:javascript
复制
var myString = '1 Lorem ipsum dolor sit amet 古老的故事 12345';
myString = myString.replace ( /[a-zA-Z]/g, '' );
console.log(myString);

不过要照顾好多余的空间。

票数 1
EN

Stack Overflow用户

发布于 2017-01-29 08:23:05

为什么不将grep的反向匹配标志转换为临时文件呢?

代码语言:javascript
复制
grep -v '[A-Za-z]' file.txt > tmp && mv tmp file.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41918527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档