第二部分:
1.cut 剪切
cut -d 指定分割符
#cut -d ':' -f 1 /etc/passwd
以:分割符
-f 1 打印第一段
.................
也可以指定多段,要用,号。
[root@niejicai-linux ~]# cut -d ':' -f 1,3 /etc/passwd
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
.........................
user4:509
user0:5563
[
root@niejicai-linux ~]#
cut -c 指定分割符
#cut -c 2-5 /etc/passwd (第二个字符,到第5个字符),
也是第几列的意思。
2.sort 排序
以第3段进行排序)
不是按照多少进制,也不是按照数字的大小,是按照ASII。
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
--------
[root@niejicai-linux ~]# sort -t ':' -k3 -n /etc/passwd
(按照数字大小排序要加参数 -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
------
[
root@niejicai-linux ~]#
sort -t ':' -k3 -n /etc/passwd | cut -d ':' -f 3
0 (指定到段,精确到段)
1
2
3
4
-----
[
root@niejicai-linux ~]#
cut -d ':' -f 3 /etc/passwd | sort -nr (-r表示反向)
5563
5562
5561
5506
-------
[
root@niejicai-linux ~]#
cut -d ':' -f 3 1.txt | sort -nru (-u表示唯一的,去掉重复)
5563
5562
5561
5506
5505
509
..........
2
1
0
[
root@niejicai-linux ~]#
cut -d ':' -f 3 1.txt | sort -nr|uniq -c (uniq -c可以显示重复数据的时候显示的次数)
1 5563
1 5562
1 5561
1 5506
.......
2 1
1 0
[
root@niejicai-linux ~]#
3.wc 计数
[
root@niejicai-linux ~]# wc 3.txt
6 10 58 3.txt
行数,单词,字符,文件名
[
root@niejicai-linux ~]# cat 3.txt
jiljdlaihdqlih
dadjo eoejh ]d
jjdj]
eid
ej ed
ei kweo
[
root@niejicai-linux ~]#
[
root@niejicai-linux ~]# vim 9.txt
[
root@niejicai-linux ~]# wc 9.txt
2 2 4 9.txt
[
root@niejicai-linux ~]# cat -A 9.txt
1$
2$
[
root@niejicai-linux ~]#
回车也是算是字符。
实验题:
要你判断9.txt是否超过三行,如果没有超过,就输出一个NO
[
root@niejicai-linux ~]# line=`wc -l 9.txt | cut -d ' ' -f2`; echo $line
9.txt
[
root@niejicai-linux ~]# line=`wc -l 9.txt | cut -d ' ' -f1`; echo $line 2
[
root@niejicai-linux ~]# if [ $line -lt "3" ]; then echo "no"; fi
no
[
root@niejicai-linux ~]#
4.uniq -c 重复的行显示出来。
uniq 去重复,最常用就一个 -c 用来统计重复的行数,
去重前要先排序sort 1.txt | uniq -c
5.tee
后跟文件名,类似于>,比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上
类似于
[
root@niejicai-linux ~]# cat 9.txt > 1.log
[
root@niejicai-linux ~]# cat 1.
1.log 1.txt
[
root@niejicai-linux ~]# cat 1.log
1
2
6.tr
用来替换字符
最常用的就是大小写转换: head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'
tr 替换一个字符也是可以的 grep 'root' /etc/passwd |tr 'r' 'R'
[
root@niejicai-linux ~]# ls | tr 'a-z' 'A-Z'
10.TXT
12
1.LOG
1.TXT
234
.............
ROOT
[
root@niejicai-linux ~]# ls | tr 'A-Z' 'a-z'
10.txt
12
1.log
1.txt
234
..............
jicai
niejicailinux.txt
root
[
root@niejicai-linux ~]#
7.split 切割大文件用的
测试:
[
root@niejicai-linux ~]# for i in `seq 1 10000` ;do cat /etc/ passwd >> 1.txt ; done
[
root@niejicai-linux ~]# du -sh /etc/passwd
4.0K /etc/passwd
[
root@niejicai-linux ~]# du -sb /etc/passwd
1943 /etc/passwd
[
root@niejicai-linux ~]# du -sh 1.txt
19M 1.txt
[
root@niejicai-linux ~]# wc -l 1.txt
410044 1.txt
[
root@niejicai-linux ~]#
[
root@niejicai-linux ~]# mkdir nie
[
root@niejicai-linux ~]# mv 1.txt nie
[
root@niejicai-linux ~]# cd nie
[
root@niejicai-linux nie]# ls
1.txt
[
root@niejicai-linux nie]#
split -l 10000 1.txt
[
root@niejicai-linux nie]# ls
1.txt xad xah xal xap xat xax xbb xbf xbj xbn
xaa xae xai xam xaq xau xay xbc xbg xbk xbo
xab xaf xaj xan xar xav xaz xbd xbh xbl xbp
xac xag xak xao xas xaw xba xbe xbi xbm
[
root@niejicai-linux nie]# wc -l *
410044 1.txt
10000 xaa
10000 xab
10000 xac
..................
10000 xbm
10000 xbn
10000 xbo
44 xbp
820088 total
[
root@niejicai-linux nie]#
还可以换一个名字,如下
[
root@niejicai-linux nie]# rm -f x[ab]*
[
root@niejicai-linux nie]# ls
1.txt
[
root@niejicai-linux nie]# split -l 10000 1.txt a
[
root@niejicai-linux nie]# ls
1.txt aad aah aal aap aat aax abb abf abj abn
aaa aae aai aam aaq aau aay abc abg abk abo
aab aaf aaj aan aar aav aaz abd abh abl
aac aag aak aao aas aaw aba abe abi abm
[
root@niejicai-linux nie]#
[
root@niejicai-linux nie]# rm -f a*
[
root@niejicai-linux nie]# split -l 10000 1.txt niejicai
[
root@niejicai-linux nie]# ls
1.txt niejicaiai niejicaiar niejicaiba niejicaibj
niejicaiaa niejicaiaj niejicaias niejicaibb niejicaibk
niejicaiab niejicaiak niejicaiat niejicaibc niejicaibl
......................
[root@niejicai-linux nie]# split -b 2M 1.txt
[
root@niejicai-linux nie]# ls
1.txt niejicaiak niejicaiav niejicaibg xac
niejicaiaa niejicaial niejicaiaw niejicaibh xad
niejicaiab niejicaiam niejicaiax niejicaibi xae
niejicaiac niejicaian niejicaiay niejicaibj xaf
..............
[
root@niejicai-linux nie]# du -sh *
19M 1.txt
...............
2.0M xaf
2.0M xag
2.0M xah
2.0M xai
544K xaj
[
root@niejicai-linux nie]#
8.&& 和 ||
command1 ; command2 前面命令是否执行完成都会执行后面命令
command1 && command2 只有前面命令执行成功才会执行后面命令
command1 || command2 只有前面命令不成功再去执行后面命令
1.cut 剪切
cut -d 指定分割符
#cut -d ':' -f 1 /etc/passwd
以:分割符
-f 1 打印第一段
.................
也可以指定多段,要用,号。
[root@niejicai-linux ~]# cut -d ':' -f 1,3 /etc/passwd
root:0
bin:1
daemon:2
adm:3
lp:4
sync:5
shutdown:6
halt:7
.........................
user4:509
user0:5563
[
root@niejicai-linux ~]#
cut -c 指定分割符
#cut -c 2-5 /etc/passwd (第二个字符,到第5个字符),
也是第几列的意思。
2.sort 排序
以第3段进行排序)
不是按照多少进制,也不是按照数字的大小,是按照ASII。
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
--------
[root@niejicai-linux ~]# sort -t ':' -k3 -n /etc/passwd
(按照数字大小排序要加参数 -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
------
[
root@niejicai-linux ~]#
sort -t ':' -k3 -n /etc/passwd | cut -d ':' -f 3
0 (指定到段,精确到段)
1
2
3
4
-----
[
root@niejicai-linux ~]#
cut -d ':' -f 3 /etc/passwd | sort -nr (-r表示反向)
5563
5562
5561
5506
-------
[
root@niejicai-linux ~]#
cut -d ':' -f 3 1.txt | sort -nru (-u表示唯一的,去掉重复)
5563
5562
5561
5506
5505
509
..........
2
1
0
[
root@niejicai-linux ~]#
cut -d ':' -f 3 1.txt | sort -nr|uniq -c (uniq -c可以显示重复数据的时候显示的次数)
1 5563
1 5562
1 5561
1 5506
.......
2 1
1 0
[
root@niejicai-linux ~]#
3.wc 计数
[
root@niejicai-linux ~]# wc 3.txt
6 10 58 3.txt
行数,单词,字符,文件名
[
root@niejicai-linux ~]# cat 3.txt
jiljdlaihdqlih
dadjo eoejh ]d
jjdj]
eid
ej ed
ei kweo
[
root@niejicai-linux ~]#
[
root@niejicai-linux ~]# vim 9.txt
[
root@niejicai-linux ~]# wc 9.txt
2 2 4 9.txt
[
root@niejicai-linux ~]# cat -A 9.txt
1$
2$
[
root@niejicai-linux ~]#
回车也是算是字符。
实验题:
要你判断9.txt是否超过三行,如果没有超过,就输出一个NO
[
root@niejicai-linux ~]# line=`wc -l 9.txt | cut -d ' ' -f2`; echo $line
9.txt
[
root@niejicai-linux ~]# line=`wc -l 9.txt | cut -d ' ' -f1`; echo $line 2
[
root@niejicai-linux ~]# if [ $line -lt "3" ]; then echo "no"; fi
no
[
root@niejicai-linux ~]#
4.uniq -c 重复的行显示出来。
uniq 去重复,最常用就一个 -c 用来统计重复的行数,
去重前要先排序sort 1.txt | uniq -c
5.tee
后跟文件名,类似于>,比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上
类似于
[
root@niejicai-linux ~]# cat 9.txt > 1.log
[
root@niejicai-linux ~]# cat 1.
1.log 1.txt
[
root@niejicai-linux ~]# cat 1.log
1
2
6.tr
用来替换字符
最常用的就是大小写转换: head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'
tr 替换一个字符也是可以的 grep 'root' /etc/passwd |tr 'r' 'R'
[
root@niejicai-linux ~]# ls | tr 'a-z' 'A-Z'
10.TXT
12
1.LOG
1.TXT
234
.............
ROOT
[
root@niejicai-linux ~]# ls | tr 'A-Z' 'a-z'
10.txt
12
1.log
1.txt
234
..............
jicai
niejicailinux.txt
root
[
root@niejicai-linux ~]#
7.split 切割大文件用的
测试:
[
root@niejicai-linux ~]# for i in `seq 1 10000` ;do cat /etc/ passwd >> 1.txt ; done
[
root@niejicai-linux ~]# du -sh /etc/passwd
4.0K /etc/passwd
[
root@niejicai-linux ~]# du -sb /etc/passwd
1943 /etc/passwd
[
root@niejicai-linux ~]# du -sh 1.txt
19M 1.txt
[
root@niejicai-linux ~]# wc -l 1.txt
410044 1.txt
[
root@niejicai-linux ~]#
[
root@niejicai-linux ~]# mkdir nie
[
root@niejicai-linux ~]# mv 1.txt nie
[
root@niejicai-linux ~]# cd nie
[
root@niejicai-linux nie]# ls
1.txt
[
root@niejicai-linux nie]#
split -l 10000 1.txt
[
root@niejicai-linux nie]# ls
1.txt xad xah xal xap xat xax xbb xbf xbj xbn
xaa xae xai xam xaq xau xay xbc xbg xbk xbo
xab xaf xaj xan xar xav xaz xbd xbh xbl xbp
xac xag xak xao xas xaw xba xbe xbi xbm
[
root@niejicai-linux nie]# wc -l *
410044 1.txt
10000 xaa
10000 xab
10000 xac
..................
10000 xbm
10000 xbn
10000 xbo
44 xbp
820088 total
[
root@niejicai-linux nie]#
还可以换一个名字,如下
[
root@niejicai-linux nie]# rm -f x[ab]*
[
root@niejicai-linux nie]# ls
1.txt
[
root@niejicai-linux nie]# split -l 10000 1.txt a
[
root@niejicai-linux nie]# ls
1.txt aad aah aal aap aat aax abb abf abj abn
aaa aae aai aam aaq aau aay abc abg abk abo
aab aaf aaj aan aar aav aaz abd abh abl
aac aag aak aao aas aaw aba abe abi abm
[
root@niejicai-linux nie]#
[
root@niejicai-linux nie]# rm -f a*
[
root@niejicai-linux nie]# split -l 10000 1.txt niejicai
[
root@niejicai-linux nie]# ls
1.txt niejicaiai niejicaiar niejicaiba niejicaibj
niejicaiaa niejicaiaj niejicaias niejicaibb niejicaibk
niejicaiab niejicaiak niejicaiat niejicaibc niejicaibl
......................
[root@niejicai-linux nie]# split -b 2M 1.txt
[
root@niejicai-linux nie]# ls
1.txt niejicaiak niejicaiav niejicaibg xac
niejicaiaa niejicaial niejicaiaw niejicaibh xad
niejicaiab niejicaiam niejicaiax niejicaibi xae
niejicaiac niejicaian niejicaiay niejicaibj xaf
..............
[
root@niejicai-linux nie]# du -sh *
19M 1.txt
...............
2.0M xaf
2.0M xag
2.0M xah
2.0M xai
544K xaj
[
root@niejicai-linux nie]#
8.&& 和 ||
command1 ; command2 前面命令是否执行完成都会执行后面命令
command1 && command2 只有前面命令执行成功才会执行后面命令
command1 || command2 只有前面命令不成功再去执行后面命令