shell特殊符号cut命令

shell特殊符号

* *任意个任意字符
* ?任意一个字符
* #注释字符
* \脱义字符
* |管道符

命令cut
cut用来截取某一个字段,其格式为:#cut –d ‘分隔字符’[-cf]n,n是数字。

选项:
-d 后面跟分隔符,分隔字符要有单引号括起来。
-c 后面接的是第几个字符。
-f 后面接的是第几个区块。

[root@Ask-02 ~]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@Ask-02 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1
root
bin
[root@Ask-02 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
root:x
bin:x
[root@Ask-02 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3
root:x:0
bin:x:1
[root@Ask-02 ~]# cat /etc/passwd |head -2 |cut -c 4
t

sort_wc_uniq命令

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

选项:
-n 表示使用纯数字排序
-r 表示反向排序
-u 表示去重复
-t 后面跟分割字符,作用跟cut的-d选项一样
-kn1,n2 表示由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序

[root@Ask-02 文档]# sort 1.txt
<

[
1111
11222
22333
444444411
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@Ask-02 文档]# sort -n 1.txt //字母默认为0
<

[
adm:x:3:4:adm:/var/adm:/sbin/nologin
1111
11222
22333
444444411
[root@Ask-02 文档]# sort -nr 1.txt //反序显示
444444411
22333
11222
1111
adm:x:3:4:adm:/var/adm:/sbin/nologin
[

<

wc命令

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

[root@Ask-02 文档]# cat 2.txt
hello world
111
222
111,222
[root@Ask-02 文档]# wc -l 2.txt
4 2.txt
[root@Ask-02 文档]# wc -m 2.txt
28 2.txt
[root@Ask-02 文档]# wc -w 2.txt
5 2.txt

uniq命令
uniq用来删除重复的行
选项:
-c 统计重复次数

[root@Ask-02 文档]# cat 2.txt
hello world
111
222
111,22
222
aa
345
222
aa
456
456
[root@Ask-02 文档]# sort 2.txt |uniq -c
1 111
1 111,22
3 222
1 345
2 456
2 aa
1 hello world

tee_tr_split命令

命令tee
tee后面跟文件名,其作用类似于重定向>,比重定向多一个功能,把文件写入后面所跟的文件时并显示在屏幕上,通常用于管道符 |后。
选项
-a 追加的意思

[root@Ask-02 文档]# sort 2.txt |uniq -c |tee 4.txt
1 111
1 111,22
3 222
1 345
2 456
2 aa
1 hello world
[root@Ask-02 文档]# sort 2.txt |uniq -c |tee -a 4.txt
[root@Ask-02 文档]# cat 4.txt
1 111
1 111,22
3 222
1 345
2 456
2 aa
1 hello world
1 111
1 111,22
3 222
1 345
2 456
2 aa
1 hello world

命令tr
tr用于替换字符

[root@Ask-02 文档]# echo "asklinux" |tr '[al]' '[AL]'
AskLinux
[root@Ask-02 文档]# echo "asklinux" |tr '[a-z]' '[A-Z]'
ASKLINUX

命令split

split用于切割文档。

选项:
-b 表示依据大小来分割文档,单位为byte
-l 表示依据行数来分割文档

[root@Ask-02 演示]# du -sh 5.txt
652K 5.txt
[root@Ask-02 演示]# split -b 200k 5.txt
[root@Ask-02 演示]# ls
5.txt xaa xab xac xad
[root@Ask-02 演示]# split -l 4000 5.txt
[root@Ask-02 演示]# ls
5.txt xaa xab xac xad xae

shell特殊符号下

* $变量前缀,!$组合,正则里面表示行尾
* ;多条命令写到一行,用分号分割
* ~用户家目录,正则表达式表示匹配符
* &放到命令后面,会把命令丢到后台
* >  >>   2>  2>>  &>
* []指定字符串中的一个,[0-9],[a-zA-Z][abc] 
* ||和&&,用于命令之间

[root@Ask-02 演示]# rm -f xa* ; ls //分号用法
5.txt

[root@Ask-02 文档]# ls 1.txt || wc -l 2.txt //当前面的命令正确执行时,后面的命令将不再执行
1.txt
[root@Ask-02 文档]# ls 1.txt && wc -l 2.txt //当前面的命令正确执行时,后面的命令才执行
1.txt
11 2.txt