本文的copyright归yuweixian4230@163.com 所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
作者:yuweixian4230@163.com
博客:yuweixian4230.blog.chinaunix.net
环境说明:
- ywx@ywx:~/Desktop/test$ sudo locale
-
[sudo] password for ywx:
-
LANG=en_US.utf8
-
LC_CTYPE="en_US.utf8"
-
LC_NUMERIC="en_US.utf8"
-
LC_TIME="en_US.utf8"
-
LC_COLLATE="en_US.utf8"
-
LC_MONETARY="en_US.utf8"
-
LC_MESSAGES="en_US.utf8"
-
LC_PAPER="en_US.utf8"
-
LC_NAME="en_US.utf8"
-
LC_ADDRESS="en_US.utf8"
-
LC_TELEPHONE="en_US.utf8"
-
LC_MEASUREMENT="en_US.utf8"
-
LC_IDENTIFICATION="en_US.utf8"
-
LC_ALL=
-
ywx@ywx:~/Desktop/test$
实现功能:
写一个函数,对文件中的指定列进行过滤 函数如下:
- #include <stdio.h>
-
#include <stdlib.h>
-
-
int main(void)
-
{
-
system("colrm 1 8 < cihui2.txt > cihui3.txt");
-
exit(EXIT_SUCCESS);
-
}
在xp下经常是 GB 格式,而在 linux是 utf-8格式
1. 从xp中 下载文件 cihui.txt,复制到linux系统下,使用vim查看,发现有控制字符
使用 set fileencoding 发现是 fileencoding=euc-cn 格式
2. 将 euc-cn 转化为 linux下的utf-8 格式 并且过滤 RLF文件
iconv 转换,iconv的命令格式如下:
iconv -f encoding -t encoding inputfile
比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK -t UTF-8 file1 -o file2
如果我们先直接使用
ywx@ywx:~/Desktop/test$ col -b < cihui.txt > cihui1.txt
过滤掉RLF控制字符,将发生如下错误
col: Invalid or incomplete multibyte or wide character
所以我们的顺序如下:
- ywx@ywx:~/Desktop/test$ col -b < cihui.txt > cihui1.txt
-
col: Invalid or incomplete multibyte or wide character
-
ywx@ywx:~/Desktop/test$ iconv -f euc-cn -t utf-8 cihui.txt -o cihui1.txt
-
ywx@ywx:~/Desktop/test$ vim cihui1.txt
-
ywx@ywx:~/Desktop/test$ col -b cihui2.txt
-
ywx@ywx:~/Desktop/test$ vim cihui2.txt
查看 cihui2.txt 发现我们已经 是 utf-8 格式,并且 过滤掉 RLF控制字符了
3. 使用函数 进行 colrm 过滤指定列操作
已经完成操作
记着 以前一个问题,删除指定的列操作, 现在我们可以使用 colrm 这个 shell命令实现了
阅读(20728) | 评论(0) | 转发(0) |