今天有网友问我一个问题,问题是他要在一个脚本中删除所有的中文汉字。这个问题一下子使我有点犯难,在脚本中删除一两个汉字,那我是手到擒来,匹配所有汉字倒是第一次。于是净下来仔细想了一下,汉字在计算机系统里是按照一定的编码格式表示的,就是我们常说的如:GB2312、GB18030等,那么这个问题就应该好解决了,只要符合这个编码格式的就都是汉字了。于是上网搜索汉字的编码格式。得出一下结果:
从GB2312-1980编码开始,汉字都是采用双字节编码。为了与系统中基本的ASCII字符集区分开, 所有汉字编码的每个字节的第一位都是1。例如:“啊”字的编码为0xB0A1。GB2312的汉字编码规则为:第一个字节的值在0xB0到0xF7之间, 第二个字节的值在0xA0到0xFE之间。GB12345和GB13000是对GB2312-1980的扩充,所有已经包含在GB2312中的汉字编码不 变,另外增加更多的码位。其编码规则大致为:第一个字节的值在0x81到0xFE之间,第二个字节的值在0x40到0xFE之间。由于GB13000是对 GB2312的扩展,所以也被成为GBK。
那剩下的问题就简单了,我用sed把符合这些编码格式的用空替代不就解决了吗。
sed的命令表达式如下:
#sed -r "s/[\x81-\xFE][\x40-\xFE]//g" file
执行一下发现有问题,原来系统的编码设置问题,更新一下:
#LANG=C sed -r "s/[\x81-\xFE][\x40-\xFE]//g" file
C代表英文环境 ASCII 编码格式,再次运行,一切OK。
呵呵,后来有查了一下网络关于这个的文章,发现已经有了,思路和我的一样。那个帖子地址如下:
http://bbs.chinaunix.net/viewthread.php?tid=1324396&extra=&page=1
高人们真是无处不在啊。
本文转载自:
crown_prince 的BLOG
http://7056824.blog.51cto.com/69854/178940
分享到:
相关推荐
在给出的知识点中,SED单行脚本的使用方法被概括为以下几个主要方面: 1. 文本间隔处理 - 在每行后面增加空行:使用`sed G`命令,可以在每行的后面增加一个空行。 - 删除所有空行后在每行后面增加空行:通过`sed ...
4. **将第一个脚本所产生的所有空行删除(即删除所有偶数行)** - **SED**: `sed'n;d'` - 解析:`n` 命令跳过当前行并读取下一行,`d` 命令删除当前行,因此此命令组合实现了删除所有偶数行的效果。 - **AWK**: `...
4. **将第一个脚本所产生的所有空行删除(即删除所有偶数行)** ```bash sed 'n;d' ``` 使用 `n` 跳过一行,然后使用 `d` 删除当前行。这样可以删除所有偶数行。 5. **在匹配式样“regex”的行之前插入一空行...
### SED单行脚本快速参考详解 SED(Stream Editor)是Unix系统中的一款强大的文本处理工具,主要用于在管道中进行文本数据的编辑工作。它能够执行文本替换、删除、插入等多种操作,无需临时文件即可完成对输入流的...
在Linux系统中,Shell脚本编程是日常自动化任务和系统管理的重要工具,而`sed`(流编辑器,Stream Editor)则是Shell脚本中的一个强大工具。本文将深入讲解`sed`命令的基本概念、功能以及在Shell脚本中的具体应用。 ...
例如,以下`awk`命令用于打印输入文件中所有包含单词"example"的行: ```bash awk '/example/' filename ``` `sed`,全称"流编辑器"(Stream Editor),它可以逐行处理输入数据,进行替换、删除、插入等操作,然后...
3. **执行脚本**:根据预先定义的SED脚本,对模式空间中的内容进行编辑。 4. **输出结果**:编辑后的文本行从模式空间输出到标准输出。 5. **循环处理**:这一过程会持续进行,直到所有输入文本行都被处理完毕。 ##...
2. **去除前导空白字符**:`sed's/^[ \t]*//'`可以删除每一行起始处的所有空格和制表符,实现文本的左对齐。 #### 深入解析 在文本间隔部分,通过不同的`sed`命令组合,我们可以灵活地控制文本中的空行数量和位置...
**sed(流编辑器)是Linux/Unix系统中一个强大的文本处理工具,它能在线进行文本替换、删除、插入等操作,广泛应用于自动化脚本和数据处理任务中。本文将通过一系列中文实例来深入理解sed的用法。** 1. **基本语法*...
- 删除由第一个脚本产生的所有空行:`sed 'n;d'` - 在匹配特定模式的行之前插入一个空行:`sed '/regex/{x;p;x;}'` - 在匹配特定模式的行之后插入一个空行:`sed '/regex/G'` - 在匹配特定模式的行之前和之后各...
Sed,即流编辑器,是一个非交互式的文本处理工具,它能够执行文本替换、插入、删除等操作,而awk则是一个强大的文本分析工具,它能够通过编写简短的脚本来实现复杂的文本处理功能。 Sed与awk(第二版)这本书作为...
### Linux脚本编程中的sed详解 #### sed命令简介 sed(stream editor)是Linux系统下的一款强大的文本处理工具,主要用于对文件或输入流(标准输入)进行文本转换、过滤等功能。它支持各种复杂的文本处理任务,如...
例如,`awk -F ',' '{print $1}' file.csv`会打印`file.csv`中所有行的第一列,其中`-F ','`设定了字段分隔符为逗号。 结合这两个工具,开发者可以在Shell脚本中实现更复杂的数据处理任务。例如,可以先用`sed`...
在脚本中使用sed
### sed中文手册知识点详解 #### 1. Introduction **sed** (Stream Editor) 是一种用于在 UNIX 和类 UNIX 操作系统上自动进行文本编辑的强大工具。它允许用户通过一系列预定义的命令对文本文件进行非交互式的批量...
2. **替换操作**:`sedsed 's/old/new/g' file.txt` 将`file.txt`中所有"old"替换为"new"。 3. **条件删除与替换结合**:`sedsed -d '/pattern/; s/another_pattern/replacement/g' file.txt` 删除匹配`pattern`的行...
sed操作通常是可重复的,并且能够以批处理的方式来处理文件,这在自动化脚本和数据处理中非常有用。sed的命令模式包括对文本进行删除、替换、插入等多种编辑功能,用户可以通过正则表达式来指定匹配条件,从而精确...