码迷,mamicode.com
首页 > 系统相关 > 详细

Linux——note shell常用命令 cut 、sort、unqi、tee、tr、split和shell中连接符&& ||

时间:2016-01-07 18:31:20      阅读:569      评论:0      收藏:0      [点我收藏+]

标签:shell常用命令

1、cut

常用作将一个文件分段

cut -d‘分隔符‘ [-cf] n

-d 后面指定分隔符,用单引号引起来。

-f 指定第几段

-c 后面只有一个数字表示截取第几个字符,后面跟一个数字区域,表示截取从几到几。

[root@zekLinux ~]# cut -d: -f 3 /etc/passwd

[root@zekLinux ~]# cut -d: -f 3,4 /etc/passwd

[root@zekLinux ~]# cut -c 10 /etc/passwd

[root@zekLinux ~]# cut -c 1-10 /etc/passwd

2、sort(排序默认以ASCII值排序)

sort [-t 分隔符] [-kn1,n2] [-nru]

-t 分隔符:作用与cut的-的一个意思

-n 使用纯数字排序默认升序

-r 反向排序,数字降序

-u 去重复

-kn1,n2: 由n1区间排序到n2区间,可以只写kn1,即只对n1字段排序。

[root@zekLinux ~]# sort /etc/passwd

[root@zekLinux ~]# sort -t: -k3 /etc/passwd

[root@zekLinux ~]# sort -t: -k3 -n /etc/passwd

[root@zekLinux ~]# sort -t: -k3,5 -n /etc/passwd 指定范围

[root@zekLinux ~]# sort -t: -k3,5 -r -n /etc/passwd

user1:x:510:510::/home/user1:/bin/bash

user2:x:508:500::/home/user3:/sbin/nologin

[root@zekLinux ~]# sort -u 2.txt

[root@zekLinux ~]# sort -nu 2.txt -nu一起使用时会将里面的多个字符串或字符当作一个数字来处理,只显示一个字符串或字符。

sort排序时,-n选项会把所有字母都看成是0,再加个-u去重复,当然就剩一个字符串或字符了。

3、wc 

wc -l(计算行)-w(word) -m(大小即多少个字符)

[root@zekLinux ~]# wc -l 1.txt 2.txt

  2 1.txt

 22 2.txt

 24 总用量

[root@zekLinux ~]# wc -w 1.txt (以一个分隔符为一个word)

6 1.txt

[root@zekLinux ~]# cat 1.txt

ls: 无法访问11111: 没有那个文件或目录

ls: 无法访问11111: 没有那个文件或目录

[root@zekLinux ~]# wc -m 1.txt

50 1.txt

[root@zekLinux ~]# echo "12345"|wc -m  换行符也是一个字符

6

wc -c, --bytes 输 出 字 节 数 统 计

-m, --chars 输 出 字 符 数 统 计

-l, --lines 输 出 行 数 统 计

        -w, --words print the word counts就是文档当中有几个词

4、uniq和tee

uniq去重复并计算出有多少行重复,比sort -u多一个功能。

uniq -c 统计重复行数,并把行数写在前面,弊端就是若重复的两字符不在一起就无法判断重复需要先排序。

[root@zekLinux ~]# uniq -c 2.txt 

[root@zekLinux ~]# sort  2.txt|uniq -c

若不加-c选项就和sort -u 一致了。

tee  后跟文件名,类似重定向>,但比重定向多一个功能,在把文件写入后面所跟的文件的同时还显示在屏幕上

[root@zekLinux ~]# echo "123" > 1.txt

[root@zekLinux ~]# cat 1.txt

123

[root@zekLinux ~]# echo "11111"|tee 1.txt

11111

[root@zekLinux ~]# echo "123" > 1.txt

[root@zekLinux ~]# cat 1.txt

123

[root@zekLinux ~]# echo "11111"|tee 1.txt

11111

tee -i 使用追加模式进行重定向


单引号里面所有特殊符号都会变成普通符号,比如 ‘123$a‘ 这里面的$a就不是引用变量了, 如果用双引号就可以引用变量 "123$a" 我具体举个例子吧:

[root@localhost ~]# a=9; echo ‘123$a‘; b=8; echo "123$b"

123$a

1238


5、tr和split

tr 用于替换字符,常用作文档中出现的特殊符号处理

tr -d 删除某个字符,-d后面跟要删除的字符

   -s 把重复的字符去掉

注:替换、删除以及去重复是针对一个字符来讲的,针对一个字符串就不管用了。

[root@zekLinux ~]# ls *.txt | tr ‘a-z‘ ‘A-Z‘

123.TXT

#1.TXT

1.TXT

2.TXT

3.TXT

A.TXT

[root@zekLinux ~]# echo "hfdufeurh273498834ndlgj"|tr ‘h‘ ‘H‘

HfdufeurH273498834ndlgj

[root@zekLinux ~]# echo "hfdufeurh273498834ndlgj"|tr ‘abcfd‘ ‘ABCFD‘

hFDuFeurh273498834nDlgj


split 用于切割文档

split -b 依据大小来分割文档,单位为byte(若要写以M,K为单位则需指明如split -b 100m /100k)

      -l 依据行来分割文档

[root@zekLinux split_dir]# ls

anaconda-ks.cfg

[root@zekLinux split_dir]# wc -l anaconda-ks.cfg

32 anaconda-ks.cfg

[root@zekLinux split_dir]# split -l 10 anaconda-ks.cfg

[root@zekLinux split_dir]# ls

anaconda-ks.cfg  xaa  xab  xac  xad

[root@zekLinux split_dir]# wc -l x*

 10 xaa

 10 xab

 10 xac

  2 xad

 32 总用量

[root@zekLinux split_dir]# du -sb anaconda-ks.cfg

943     anaconda-ks.cfg

[root@zekLinux split_dir]# split -b 100 anaconda-ks.cfg

[root@zekLinux split_dir]# ls -lh x*

-rw-r--r-- 1 root root 100 1月   6 23:29 xaa

-rw-r--r-- 1 root root 100 1月   6 23:29 xab

-rw-r--r-- 1 root root 100 1月   6 23:29 xac

-rw-r--r-- 1 root root 100 1月   6 23:29 xad

-rw-r--r-- 1 root root 100 1月   6 23:29 xae

-rw-r--r-- 1 root root 100 1月   6 23:29 xaf

-rw-r--r-- 1 root root 100 1月   6 23:29 xag

-rw-r--r-- 1 root root 100 1月   6 23:29 xah

-rw-r--r-- 1 root root 100 1月   6 23:29 xai

-rw-r--r-- 1 root root  43 1月   6 23:29 xaj

可以给分割的文件命令如:

[root@zekLinux split_dir]# split -l 10 anaconda-ks.cfg new_

[root@zekLinux split_dir]# ls

anaconda-ks.cfg  new_ab  new_ad  xab  xad  xaf  xah  xaj

new_aa           new_ac  xaa     xac  xae  xag  xai

6、shell中的连接符&& ||

&& 左边命令执行成功后,才会执行右边命令

|| 左边命令执行不成功,才会执行右边命令

;  左边命令执行成功与否,右边命令都会执行

[root@zekLinux ~]# ls 1.txt && ls 2.txt

1.txt

2.txt

[root@zekLinux ~]# ls 10.txt && ls 2.txt

ls: 无法访问10.txt: 没有那个文件或目录

[root@zekLinux ~]# ls 1.txt || ls 20.txt

1.txt

[root@zekLinux ~]# ls 10.txt || ls 2.txt

ls: 无法访问10.txt: 没有那个文件或目录

2.txt

[root@zekLinux ~]# ls 1.txt ||  ls 2.txt

1.txt

[root@zekLinux ~]# ls 10.txt ; ls 2.txt

ls: 无法访问10.txt: 没有那个文件或目录

2.txt

[root@zekLinux ~]# ls 1.txt ;  ls 2.txt

1.txt

2.txt





Linux——note shell常用命令 cut 、sort、unqi、tee、tr、split和shell中连接符&& ||

标签:shell常用命令

原文地址:http://wholelife.blog.51cto.com/9839556/1732557

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