这些shell脚本中常用的命令你会用几个

嵌入式技术

1368人已加入

描述

这里阿铭列出了很多陌生的命令,这些命令在日常的文档处理工作中非常实用,所以阿铭需要先简单介绍一下它们,如果你记不住,也没有关系,以后用到的时候再进一步了解即可。

1. 命令cut

cut命令用来截取某一个字段,其格式为cut -d '分隔字符' [-cf] n,这里的n是数字。该命令有如下几个可用选项。

-d:后面跟分隔字符,分隔字符要用单引号括起来。

-c:后面接的是第几个字符。

-f:后面接的是第几个区块。

cut命令的用法如下:

 

# cat /etc/passwd|cut -d ':' -f
1 |head -5
root
bin
daemon
adm
lp

 

通过上例可以看出,-d选项后面加冒号作为分隔字符,-f 1表示截取第一段,-f和1之间的空格可有可无。示例命令如下:

 

o
i
# head -n2 /etc/passwd|cut -c1
r
b
# head -n2 /etc/passwd|cut
-c1-10
root0:0
bin1
# head -n2 /etc/passwd|cut
-c5-10
0:0
x1:
通过上例可以看出,-c选项后面可以是一个数字n,也可以是一个区间n1-n2,还可以是多个数字n1、n2和n3。示例命令如下:
# head -n2 /etc/passwd|cut
-c1,3,10
ro0
bn:

 

2. 命令sort

sort命令用做排序,其格式为sort [-t 分隔符] [-kn1,n2] [-nru],这里n1和n2指的是数字,其他选项的含义如下。

-t:后面跟分隔字符,作用跟cut的-d选项一样。

-n:表示使用纯数字排序。

-r:表示反向排序。

-u:表示去重复。

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

如果sort不加任何选项,则从首字符向后依次按ASCII码值进行比较,最后将它们按升序输出。示例命令如下:

# head -n5 /etc/passwd|sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
-t选项后面跟分隔符,-k选项后面跟单个数字表示对第几个区域的字符串排序,-n选项则表示使用纯数字排序。示例命令如下:
# head -n5 /etc/passwd |sort -t:
-k3 -n
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

 

-k选项后面跟数字n1和n2表示对第n1和n2区域内的字符串排序,-r选项则表示反向排序。示例命令如下:

# head -n5 /etc/passwd |sort -t:
-k3,5 -r
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash

 

这里的-k3,5表示对第3区域至第5区域间的字符串排序。

3. 命令wc

wc命令用于统计文档的行数、字符数或词数。该命令的常用选项有-l(统计行数)、-m(统计字符数)和-w(统计词数)。示例命令如下:

 

# wc /etc/passwd
45  103
2499 /etc/passwd
# wc -l /etc/passwd
45
/etc/passwd
# wc -m /etc/passwd
2499 /etc/passwd
# wc -w /etc/passwd
103
/etc/passwd

 

如果wc不跟任何选项,直接跟文档,则会把行数、词数和字符数依次输出。

4. 命令uniq

uniq命令用来删除重复的行,该命令只有-c选项比较常用,它表示统计重复的行数,并把行数写在前面。我们先来编写一个文件,示例命令如下:

# vim testb.txt //把下面的内容写入testb.txt并保存
111
222
111
333

 

使用uniq前,必须先给文件排序,否则不管用。示例命令如下:

 

# uniq testb.txt
111
222
111
333
# sort testb.txt |uniq
111
222
333
# sort testb.txt |uniq -c
2 111
1 222
1 333

 

5. 命令tee

tee命令后面跟文件名,其作用类似于重定向>,但它比重定向多一个功能,即把文件写入后面所跟的文件时,还显示在屏幕上。该命令常用于管道符|后。示例命令如下:

# echo
"aaaaaaaaaaaaaaaaaaaaaaaaaaa" |tee testb.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaa
# cat testb.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaa

 

6. 命令tr

tr命令用于替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的符号^M。该命令常用的选项有以下两个。

-d:表示删除某个字符,后面跟要删除的字符。

-s:表示删除重复的字符。

tr命令常用于把小写字母变成大写字母,如tr '[a-z]' '[A-Z]'。示例命令如下:

 

# head -n2 /etc/passwd |tr
'[a-z]' '[A-Z]'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN

 

tr命令还可以替换一个字符,示例命令如下:

 

# grep 'root' /etc/passwd |tr
'r' 'R'
Root:x:0:0:Root:/Root:/bin/bash
opeRatoR:x:11:0:opeRatoR:/Root:/sbin/nologin
不过替换、删除以及去重复等操作都是针对一个字符来讲的,有一定的局限性。如果是针对一个字符串,就不能再使用了,所以你只需简单了解一下tr命令即可。以后,你还会学到更多可以实现字符串操作的工具。

 

7. 命令split

split命令用于切割文档,常用的选项为-b和-l。

-b:表示依据大小来分割文档,单位为byte,示例命令如下:

 

# mkdir split_dir
# cd !$
cd split_dir
# cp /etc/passwd ./
# split -b 500 passwd
# ls
passwd
xaa  xab  xac 
xad  xae
如果split不指定目标文件名,则会以xaa、xab...这样的文件名来存取切割后的文件。当然,我们也可以指定目标文件名,如下所示:
# rm –f xa*
# split -b 500 passwd 
123
# ls
123aa 123ab 
123ac  123ad  123ae 
passwd

 

-l:表示依据行数来分割文档,示例命令如下:

 

# rm -f 123a*
# split -l 10 passwd
# wc -l *
45 passwd
10 xaa
10 xab
10 xac
10 xad
5 xae
90 total

 

  审核编辑:汤梓红
 
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分