文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell学习之合并与分割

shell学习之合并与分割

时间:2008-04-28  来源:piaoyizu

 

先加两条自己用的命令.
cat 1.txt | grep "inet addr" | awk 'FS="inet addr:" {print substr($2, 6, 20)}'
cat 1.txt | grep "inet addr" | cut -d ':' -f2 | cut -d ' ' -f1
cat 1.txt | grep "inet addr" | cut -c 21-35

现在开始引用转载的东东!

 

 


1,sort用法
    sort 在执行时先查看是否为域分隔设置了-t选项,如果设置了,则使用它来将记录分成域0、域1等等。如果没有设置,用空格代替。缺省时sort将整个行排序,指定域的情况例外。例如:
    注意:域是从0开始的

    field0    field1    field2
    abs        23        tt
    cov        89        sdf
    gg        98        dsf

1),基本格式
sort [-m][-o output][-bdfinru][-t char][-k keydef]... [file...]
sort -c [-bdfinru][-t char][-k keydef][file]

选项说明:
-c     检测文件是否已经被分类
-m    合并已经分类的文件
-o    指定输出文件
-u    删除所有复制行

---------------
-t char        使用非空格或TAB做分隔域   
-kn            让域的计数从域1开始,并从第n域排序
-r            对分类次序或比较求逆
+n n         这里的第一个n是域号,表示对n域的数值进行分类
+n            按第一个字母对第n域进行分类,注意和前一种的区别

2)输出的保存
i)使用重定向:    sort filename > result.out
ii)使用-o选项:    sort filename -o result.out

3)文件是否已经分类的检查
i)sort -c filename    #检测文件是否已经分类
ii)sort -t : -c filename    #检测文件是否按照:域进行分类

4)-r    分类求反
i)按0域逆向排序:sort -t: -r /etc/passwd

5)+n    按指定域分类
i)按第3域(数字)分类:
 sort -t: +2 /etc/passwd    #注意这里是按第n域的第一个字母分类,而不是整个数值

6)+n n    数值域分类
sort -t: +2n /etc/passwd    #第2域,实际上是第三栏,也就是用户的ID

7)u        唯一性分类(必须是完全相同的行)
i)sort -u filename
ii)sort -u +2n        #按第2域数值域,分类,同时除去相同的数值

8)指定分类序列
sort +0 -2 +3        #开始以0域分类忽略2域然后再以3域分类

2,cut的用法
    cut用来对输入或文本的列和域进行剪切。剪切的内容可以粘贴到另外的文本。默认是以空格或tab做为域分隔符.
基本用法:
        cut [options] file1 file2
具体的详细用法,参考: man cut.
选项:
-c list        指定剪切的字符数
-f field    指定剪切域数
-d char     指定不同的域分隔符
-c1 5,7        剪切第1然后是第5到7个字符
-f 1,5        剪切第1和第5域
-f 11-15    剪切第11到15域
-f 1-        剪切第1到最后域

例子:
1)cut -d: -f1,6 /etc/passwd        #使用:最为分隔符,然后取第1和第6域
2)cut -d: -f6-    /etc/passwd        #使用:做分隔符,并取第6域到最后一域
3)cut -c1-2        /etc/passwd        #取第1字符到2字符
4)cut -c2,3,6        /etc/passwd        #取第2,第3和第6字符

3,paste的用法
    paste按行将不同的信息行放在一起。
基本格式:
    paste -d -s file ...

-d        指定不同于空格或TAB键的域分隔符
-s        将每个文件合并成行而不是按行粘贴
-        使用标准输入: ls -l | paste

例子:进行域的合并操作
cat file1
name  score
name1 77
name2 99

cat file2
old        school
12        swust
23        sj

-----------------
paste file1 file2
输出:
name  score    old    sch
name1 77      12    swu
name2 99      23    sj

4,split的用法
基本格式:
    split    [options]    input-file [输出文件前缀名]

[options]:
-l number        指定每个分解文件的行数
-b     n            指定每个文件的大小n*8
-b    nk            n*1024
-b    nm            n*1024*1024
-a    n            指定后缀的长度

    split把输入文件分解成小文件。因为有时侯文件太大,在使用VI等工具时可能出现问题,我们没有选择的余地。分解后的几个文件的默认名是:x[aa]到x[zz]。out-put-file-size选项用来指定每个文件的行数

1)split -l 10 -a 3 file1    
    分割文件file1每个小文件十行,分解成的文件的后缀为3个字符:x[aaa]到x[zzz]
2)split -b 1k -a 3 file1
    分割文件file1每个小文件1k,分解成的文件的后缀为3个字符:x[aaa]到x[zzz]
3)split -b 1k -a 3 file1 hover_
    分割文件file1每个小文件1k,分解成的文件的后缀为3个字符:x[aaa]到x[zzz],前缀以hover_开启

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载