首页 > 系统管理 > 基础知识 > Shell编程基础二
2015
04-13

Shell编程基础二

一、Linux shell中的特殊字符

*    代表零个或多个任意字符

?    代表一个任意字符

#    代表注释说明的意思,#号后面的内容忽略掉;

\    脱意字符,将后面的特殊字符(* $)还原为普通字符;

|    管道符,讲前面命令执行的结果作为后面命令的输入;

$    引用变量

;    分隔2个命令,2个命令都执行,不管前面命令是否错误 ls a.txt ; cat a.txt 

&    把命令放到后台运行

&&    命令的连接符,第一个执行成功才会执行第二个;

||    分隔命令,只有前面命令运行不成功,才会执行后面的命令;

二、shell中常用命令

1、cut    截取某一个字段、字符

  • -d    指定分隔符,分割字符用单引号 ' ' 括起来

  • -f    指定第哪个区间

  • -c    指定第几个字符;指定多个字符 -c 1,5 ;可以指定一个区间 -c 1-4 ;

1.1、号分隔列出第7列的内容,只显示前3行;

root@localhost ~]# cut -d: -f 7 passwd | head -3 
/bin/bash
/sbin/nologin
/sbin/nologin
[root@yonglinux ~]# head -3 passwd |cut -c 1-4
root
bin:
daem

2、sort    排序输出默认按首字母升序的顺序排列

  • -t    指定分隔符

  • -k    指定以哪个区间进行排序

  • -r    逆序排列

  • -u    删除重复的

  • -n    按照数字大小排序

  • -f    忽略大小写

2.1、以:号分隔,按第3列uid排序

[root@localhost ~]# sort -t: -n -k 3 passwd |head -3
root:x:0:0:root:/root:/bin/bash
ROOT:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

3、wc    统计行数、单词数、字节数

  • wc -l      统计行数

  • wc -w    统计单词数

  • wc -c     统计字符数(wc -m 一样的功能)

[root@yonglinux ~]# wc -l /etc/passwd
24 /etc/passwd
[root@yonglinux ~]# wc -w /etc/passwd
32 /etc/passwd
[root@yonglinux ~]# wc -c /etc/passwd
1041 /etc/passwd
[root@yonglinux ~]# wc /etc/passwd
  24   32 1041 /etc/passwd

4、uniq    去除重复的行

针对数字的话,需要先进行sort排序,再去除重复的行。

-c    统计重复的行数,并写在最前面;

[root@yonglinux tmp]# uniq 1.txt 
111
222
111
333
[root@yonglinux tmp]# sort 1.txt | uniq -c
      2 111
      1 222
      1 333
[root@yonglinux tmp]# sort test.txt |uniq -c
      2 12345      
      1 67899      
      2 abc      
      1 helloworld

5、tr    替换字符

常用来处理文档中出现的特殊符号,如DOS文档中出现的^M符号;

-d    删除某个字符

5.1、把小写字母变成大写字母

[root@yonglinux ~]# head -2 passwd | tr '[a-z]' '[A-Z]'
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN

5.2、替换一个字符

[root@yonglinux ~]# head -2 passwd | tr 'r' 'R'
Root:x:0:0:Root:/Root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

6、split    切割文档

  • -b    依据大小来分割文档,单位为byte

  • -l    依据行数来分割文档。

6.1、示例一,按b大小分割

[root@yonglinux ~]# ls -lb passwd
 -rw-r--r--. 1 root root 1076 Apr  9 15:14 passwd
[root@yonglinux ~]# split -b 500 passwd
[root@yonglinux ~]# ls -l
-rw-r--r--. 1 root root  500 Apr  9 15:17 xaa
-rw-r--r--. 1 root root  500 Apr  9 15:17 xab
-rw-r--r--. 1 root root   76 Apr  9 15:17 xac

6.2、示例二,按l行数分割

[root@yonglinux ~]# cat passwd |wc -l
24
[root@yonglinux ~]# split -l 8 passwd 
[root@yonglinux ~]# wc -l xa*
   8 xaa   
   8 xab   
   8 xac  
   24 total

总结

    本博文到此介绍,如有问题,请留言!




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复