码迷,mamicode.com
首页 > 其他好文 > 详细

iconv,enconv,enca,convmv,unix2dos,dos2unix文件格式转换,od/cut/wc/dd/diff/uniq/nice/du等命令

时间:2015-05-30 16:34:34      阅读:1088      评论:0      收藏:0      [点我收藏+]

标签:

1.在Vim中查看文件编码
:set fileencoding
即可显示文件编码格式。
如果你只是想查看其它编码格式的文件或者想解决 用Vim查看文件乱码 的问题,那么你可以在
~/.vim rc 文件中添加以下内容:
set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936
这样,就可以让vim自动 识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
輸入 :set ff=unix 後,儲存該文件檔案即可。

2.vim文件编码转换
1.在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set fileencoding=utf-8

3.iconv文件编码转换:
iconv转换,比如将一个UTF-8 编码的文件转换成GBK编码
iconv -f GBK    -t UTF-8 file1    -o file2
iconv -f GB2312 -t UTF-8 test.txt -o test2.txt  
下载地址:
ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz 

4.enconv 转换文件编码,比如要将一个GBK编码的文件转换成UTF-8编码,操作如下
enconv -L zh_CN -x UTF-8 filename
enconv -L GB2312 -x UTF-8 test.txt

5.enca (如果你的系统中没有安装这个命令,可以用sudo yum install -y enca 安装 )查看文件编码
$ enca filename
filename: Universal transformation format 8 bits; UTF-8
CRLF line terminators
需要说明一点的是,enca对某些GBK编码的文件识别的不是很好,识别时会出现:
Unrecognized encoding

6.convmv文件名编码转换:
从Linux往windows拷贝文件或者从windows往Linux拷贝文件,有时会出现中文文件名乱码的情况,出现这种问题的原因是因为,windows的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码不一致,所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码。在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。
yum -y install convmv
下面看一下convmv的具体用法:
convmv -f 源编码 -t 新编码 [选项] 文件名
常用参数:
-r 递归处理子文件夹
--notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
--list 显示所有支持的编码
--unescap 可以做一下转义,比如把%20变成空格
比如我们有一个utf8编码的文件名,转换成GBK编码,命令如下:
convmv -f UTF-8 -t GBK --notest utf8编码的文件名

这样转换以后"utf8编码的文件名"会被转换成GBK编码(只是文件名编码的转换,文件内容不会发生变化)


7.unix2dos,dos2unix转换:
使用od -c -t x1 abc.txt 查看文本文件里的特殊字符,DOS/Windows使用/r/n作为行尾符,Unix使用/n作为行尾符: 
unix2dos < unix.txt > dos.txt 将Unix格式的纯文本文件转换成DOS/Windows格式的纯文本文件 
dos2unix < dos.txt > unix.txt 将DOS/Windows格式的纯文本文件转换成Unix格式的纯文本文件 

如果你在openoffice里编辑,是完全兼容的,如果你在vi里 出现/M等符号,可以使用 tr 或 sed工具过滤掉

在Linux下正常换行的文字,到了Windows下后,不再换行。
在Windows下换行时,有两个字符:回车(/r)和换行(/n)。但在Linux下,只有一个换行(/n)
可使用unix2dos和dos2unix命令进行格式的转换:
参数:
-k  保持输出文件和输入文件的日期时间戳不变
-o file   默认模式 . 将file转换,并输出到file
-n  infile outfile 新模式. 转换infile, 并输出到outfile
1. unix2dos 假设用vi新建一文本文件,输入123456 [root@centos test]# ls -l a.txt -rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt [root@centos test]# hexdump -c a.txt 0000000 1 2 3 4 5 6 /n 0000007 [root@centos test]# unix2dos -n a.txt b.txt unix2dos: converting file a.txt to file b.txt in DOS format ... [root@centos test]# ls -l total 8 -rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt -rw------- 1 root root 8 Jan 7 21:34 b.txt [root@centos test]# hexdump -c a.txt 0000000 1 2 3 4 5 6 /n 0000007 [root@centos test]# hexdump -c b.txt 0000000 1 2 3 4 5 6 /r /n 0000008 b.txt是转换后的DOS下的文件 2. dos2unix [root@centos test]# dos2unix -n b.txt c.txt dos2unix: converting file b.txt to file c.txt in UNIX format ... [root@centos test]# ls -l total 12 -rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt -rw------- 1 root root 8 Jan 7 21:34 b.txt -rw------- 1 root root 7 Jan 7 21:38 c.txt [root@centos test]# hexdump -c b.txt 0000000 1 2 3 4 5 6 /r /n 0000008 [root@centos test]# hexdump -c c.txt 0000000 1 2 3 4 5 6 /n 0000007 c.txt是转换后unix下的文本文件

od命令 用户通常使用od命令查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。 语法:od [选项] 文件… 命令中各选项的含义: - A 指定地址基数,包括: d 十进制 o 八进制(系统默认值) x 十六进制 n 不打印位移值 - t 指定数据的显示格式,主要的参数有: c ASCII字符或反斜杠序列 d 有符号十进制数 f 浮点数 o 八进制(系统默认值为02) u 无符号十进制数 x 十六进制数 除了选项c以外的其他选项后面都可以跟一个十进制数n,指定每个显示值所包含的字节数。 说明:od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal Dump)。但这不是最有用的显示方式,用ASCII码和十六进制组合的方式能提供更有价值的信息输出。
od 和 hexdump 显示文件内容或流的八进制、十六进制或其他编码的字节。它们对于访问或可视地检查文件中不能直接显示在终端上的字符很有用。 s-w8每行只用8个字节显示: [tim@L gx]$ od -Ad -tax1 -w8 a.txt 0000000 1 2 3 4 5 6 cr nl 31 32 33 34 35 36 0d 0a 0000008 a b c d e f cr nl 61 62 63 64 65 66 0d 0a 0000016 h e l l o , w o 68 65 6c 6c 6f 2c 77 6f 0000024 r l d cr nl 72 6c 64 0d 0a -j2字符方式输出test内容,跳过前两个字节: [tim@L gx]$ od -Ad -tax1 -j2 a.txt 0000002 3 4 5 6 cr nl a b c d e f cr nl 33 34 35 36 0d 0a 61 62 63 64 65 66 0d 0a 6 0000018 l l o , w o r l d cr nl 6c 6c 6f 2c 77 6f 72 6c 64 0d 0a 0000029 -N2只显示两个字节,用字符方式显示: [tim@L gx]$ od -Ad -tax1 -N2 a.txt 0000000 1 2 31 32 S

 

使用wc命令來進行文本內容統計:
指令名稱:wc
語法:wc [clw] file
說明:按照不同選項來統計字節數、字數、行數等。具體應用實例請自行 man wc來查看。
例子:統計當前目錄下文件的個數,使用命令 ls -l | wc -l
ps:該指令的參數選項比較少,曾有人使用C語言實現了wc的功能,你也可以試試哦!
使用sort命令對文本內容進行排序: 指令名稱:sort 語法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件] 選項解釋:(更多說明請自行man sort) -n:按照數目排序,number -r:降序排序 -u:去除重複項

使用uniq命令對文本進行重複列的查看和刪除: 指令名稱:uniq 語法:uniq [選項] file 說明:顯示文本中行的某些特性。 選項解釋:(更多說明請自行 man uniq) -c:在行首加上該行出現的次數,count的縮寫。 -d:只顯示重複行 -u:顯示不重複的行
使用diff命令對文本進行比較操作: 指令名稱:diff 語法:diff [選項] file1 file2 說明:diff是以逐行的方式,對兩個文件進行異同的操作。 選項解釋:(更多說明請自行 man diff) -i:忽略大小寫的差別 -b:忽略空格的差別
使用du命令統計目錄或文件佔用磁盤空間大小: 指令名稱:du 語法:du [選項] 目錄或文件 選項解釋:(更多說明請自行 man du) -k/m/g: 以kb、mb、gb顯示大小 du -S | sort -n 列出佔用空間最大的目錄 -sh:只查看指定的目錄,子目錄不查看
使用cut命令來提取想要的數據: 指令名稱:cut 語法:cut [選項] 文件 用法說明: -b:截取字節 -c:截取字符 cut -c1-15 表示截取從第一列到15列的內容 cut -c1-4,8- 表示截取1到4列的內容,還有從第八列到最後的內容 -f:截取字段 cut -f1 -d‘: 表示截取第一列,是以:作為分隔符來截取的 cut -f1- -s:表示截取中間的分隔符為Tab鍵分割的文本 ps:截取中文的時候需要注意中文字符是作為2個英文字符組成的。
使用dd命令來測試磁盤速度、創建新文件: 指令名稱:dd 指令說明:從指定位置copy數據到指定輸出位置 應用實例:bs指定每次操作塊的大小,count指定操作的次數 創建2M大小的文件。 # dd if=/dev/zero of=/home/test/2M.txt bs=1024 count=2048 同樣的,測試磁盤讀寫速度 # dd if=/dev/zero of=/home/rwspeed.ret bs=1024 count=1048576 複製備份系統 # dd if=/home/test/my_fiter of=/其他設備 bs=512 count=256 ps:windows平臺上也存在著創建指定大小文件的命令,是 fsutil 。
使用nice命令來調整程序執行的優先級: 指令名稱:nice 指令說明:調整進程的優先級 應用實例:Linux進程的優先級是從 -20 ~ +20 的,數字越小,優先級越高,也就是佔用CPU的時間越多。 普通用戶只能降低程序的優先級,root用戶可以提高/降低進程的優先級。 # nice 查看默認的優先級 # nice ./a.out 默認執行,給a.out增加10個優先級,也就是分配更少的cpu時間。 # nice -n -20 a.out 為a.out執行最高的優先級 Unix/Linux上面的命令很多,這是無數黑客和全世界的程序員們的智慧結晶。 熟練的掌握和使用系統提供的命令,往往會事倍功半。這裡只列出了很少的一部份, 其它的命令可以參考該網站的介紹,或者是找本介紹詳細的書籍來看看。

 

iconv,enconv,enca,convmv,unix2dos,dos2unix文件格式转换,od/cut/wc/dd/diff/uniq/nice/du等命令

标签:

原文地址:http://www.cnblogs.com/x113/p/4540487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!