1、cut
常用作将一个文件分段
cut -d‘分隔符‘ [-cf] n
-d 后面指定分隔符,用单引号引起来。
-f 指定第几段
-c 后面只有一个数字表示截取第几个字符,后面跟一个数字区域,表示截取从几到几。
[[email protected] ~]# cut -d: -f 3 /etc/passwd
[[email protected] ~]# cut -d: -f 3,4 /etc/passwd
[[email protected] ~]# cut -c 10 /etc/passwd
[[email protected] ~]# 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字段排序。
[[email protected] ~]# sort /etc/passwd
[[email protected] ~]# sort -t: -k3 /etc/passwd
[[email protected] ~]# sort -t: -k3 -n /etc/passwd
[[email protected] ~]# sort -t: -k3,5 -n /etc/passwd 指定范围
[[email protected] ~]# sort -t: -k3,5 -r -n /etc/passwd
user1:x:510:510::/home/user1:/bin/bash
user2:x:508:500::/home/user3:/sbin/nologin
[[email protected] ~]# sort -u 2.txt
[[email protected] ~]# sort -nu 2.txt -nu一起使用时会将里面的多个字符串或字符当作一个数字来处理,只显示一个字符串或字符。
sort排序时,-n选项会把所有字母都看成是0,再加个-u去重复,当然就剩一个字符串或字符了。
3、wc
wc -l(计算行)-w(word) -m(大小即多少个字符)
[[email protected] ~]# wc -l 1.txt 2.txt
2 1.txt
22 2.txt
24 总用量
[[email protected] ~]# wc -w 1.txt (以一个分隔符为一个word)
6 1.txt
[[email protected] ~]# cat 1.txt
ls: 无法访问11111: 没有那个文件或目录
ls: 无法访问11111: 没有那个文件或目录
[[email protected] ~]# wc -m 1.txt
50 1.txt
[[email protected] ~]# 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 统计重复行数,并把行数写在前面,弊端就是若重复的两字符不在一起就无法判断重复需要先排序。
[[email protected] ~]# uniq -c 2.txt
[[email protected] ~]# sort 2.txt|uniq -c
若不加-c选项就和sort -u 一致了。
tee 后跟文件名,类似重定向>,但比重定向多一个功能,在把文件写入后面所跟的文件的同时还显示在屏幕上
[[email protected] ~]# echo "123" > 1.txt
[[email protected] ~]# cat 1.txt
123
[[email protected] ~]# echo "11111"|tee 1.txt
11111
[[email protected] ~]# echo "123" > 1.txt
[[email protected] ~]# cat 1.txt
123
[[email protected] ~]# echo "11111"|tee 1.txt
11111
tee -i 使用追加模式进行重定向
单引号里面所有特殊符号都会变成普通符号,比如 ‘123$a‘ 这里面的$a就不是引用变量了, 如果用双引号就可以引用变量 "123$a" 我具体举个例子吧:
[[email protected] ~]# a=9; echo ‘123$a‘; b=8; echo "123$b"
123$a
1238
5、tr和split
tr 用于替换字符,常用作文档中出现的特殊符号处理
tr -d 删除某个字符,-d后面跟要删除的字符
-s 把重复的字符去掉
注:替换、删除以及去重复是针对一个字符来讲的,针对一个字符串就不管用了。
[[email protected] ~]# ls *.txt | tr ‘a-z‘ ‘A-Z‘
123.TXT
#1.TXT
1.TXT
2.TXT
3.TXT
A.TXT
[[email protected] ~]# echo "hfdufeurh273498834ndlgj"|tr ‘h‘ ‘H‘
HfdufeurH273498834ndlgj
[[email protected] ~]# echo "hfdufeurh273498834ndlgj"|tr ‘abcfd‘ ‘ABCFD‘
hFDuFeurh273498834nDlgj
split 用于切割文档
split -b 依据大小来分割文档,单位为byte(若要写以M,K为单位则需指明如split -b 100m /100k)
-l 依据行来分割文档
[[email protected] split_dir]# ls
anaconda-ks.cfg
[[email protected] split_dir]# wc -l anaconda-ks.cfg
32 anaconda-ks.cfg
[[email protected] split_dir]# split -l 10 anaconda-ks.cfg
[[email protected] split_dir]# ls
anaconda-ks.cfg xaa xab xac xad
[[email protected] split_dir]# wc -l x*
10 xaa
10 xab
10 xac
2 xad
32 总用量
[[email protected] split_dir]# du -sb anaconda-ks.cfg
943 anaconda-ks.cfg
[[email protected] split_dir]# split -b 100 anaconda-ks.cfg
[[email protected] 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
可以给分割的文件命令如:
[[email protected] split_dir]# split -l 10 anaconda-ks.cfg new_
[[email protected] 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中的连接符&& ||
&& 左边命令执行成功后,才会执行右边命令
|| 左边命令执行不成功,才会执行右边命令
; 左边命令执行成功与否,右边命令都会执行
[[email protected] ~]# ls 1.txt && ls 2.txt
1.txt
2.txt
[[email protected] ~]# ls 10.txt && ls 2.txt
ls: 无法访问10.txt: 没有那个文件或目录
[[email protected] ~]# ls 1.txt || ls 20.txt
1.txt
[[email protected] ~]# ls 10.txt || ls 2.txt
ls: 无法访问10.txt: 没有那个文件或目录
2.txt
[[email protected] ~]# ls 1.txt || ls 2.txt
1.txt
[[email protected] ~]# ls 10.txt ; ls 2.txt
ls: 无法访问10.txt: 没有那个文件或目录
2.txt
[[email protected] ~]# ls 1.txt ; ls 2.txt
1.txt
2.txt
Linux——note shell常用命令 cut 、sort、unqi、tee、tr、split和shell中连接符&& ||