shell 基础 第二部分 ( cut ,sort, wc,uniq,tee ,tr)
来源:互联网 发布:淘宝代发怎么发货 编辑:程序博客网 时间:2024/06/02 22:00
第二部分:
1.cut 剪切
cut -d 指定分割符
#cut -d ':' -f 1 /etc/passwd
以:分割符
-f 1 打印第一段
[root@niejicai-linux ~]# cut -d ':' -f 1 /etc/passwd
root
bin
daemon
adm
lp
.................
也可以指定多段,要用,号。
[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个字符),
也是第几列的意思。
[root@niejicai-linux ~]# cut -c 2-5 /etc/passwd
oot:
in:x
aemo
dm:x
[root@niejicai-linux ~]# cut -c 1,10 /etc/passwd 也可以用号来分割
r0
b:
d2
a:
............
2.sort 排序
[root@niejicai-linux ~]# sort -t ':' -k3 /etc/passwd (以:号为分割,
以第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 -n (用了比较多,-n是按照数据的大小)
0
1
2
3
------
[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 1.txt
44 59 2056 1.txt
[root@niejicai-linux ~]#
[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 | tee 1.log
1
2
[root@niejicai-linux ~]# cat 1.log
1
2
类似于
[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 /etc/passwd
root
bin
daemon
adm
lp
.................
也可以指定多段,要用,号。
[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个字符),
也是第几列的意思。
[root@niejicai-linux ~]# cut -c 2-5 /etc/passwd
oot:
in:x
aemo
dm:x
[root@niejicai-linux ~]# cut -c 1,10 /etc/passwd 也可以用号来分割
r0
b:
d2
a:
............
2.sort 排序
[root@niejicai-linux ~]# sort -t ':' -k3 /etc/passwd (以:号为分割,
以第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 -n (用了比较多,-n是按照数据的大小)
0
1
2
3
------
[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 1.txt
44 59 2056 1.txt
[root@niejicai-linux ~]#
[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 | tee 1.log
1
2
[root@niejicai-linux ~]# cat 1.log
1
2
类似于
[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 只有前面命令不成功再去执行后面命令
0 0
- shell 基础 第二部分 ( cut ,sort, wc,uniq,tee ,tr)
- linux学习第二十五篇:cut,sort,wc,uniq,tee,tr,split命令,shell特殊符号
- Shell 常用字符处理命令cut/sort/wc/uniq/tee/tr/split
- cut、sotr、uniq、wc、tee、split、tr
- Linux命令-cut、sort、uniq、wc、tee
- Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs
- Linux下Bash的管线pipe命令,cut,grep,sort,wc,uniq,tee,tr,col,join,past,expand
- Linux下Bash的管线pipe命令,cut,grep,sort,wc,uniq,tee,tr,col,join,past,expand
- Shell文本处理 (2). cut、sort、wc、uniq、tr、 join、paste、 split、xargs
- sort/uniq/cut/wc/
- Linux学习笔记7 cut,sort,uniq,wc,tr
- shell 知识点补充(2)-重定向/ ; , &&, ||/管线命令/grep/sort/ uniq/wc/tee/tr/col/join/paste/expand/split/-
- 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
- 几个常用的文本处理shell 命令:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk
- sort uniq cut wc命令
- 一天一linux命令(16) cut sort wc uniq tee split 较常用命令
- 每日命令:过滤命令cut、sort、uniq、wc、tee、head、tail、grep、
- linux下常用的几个工具 (cut, uniq, wc, grep, sort, tr, paste)
- ros用rqt_graph显示节点关系、rqt_plot显示数据流、rqt_console显示节点的输出、rqt_logger_level
- Nginx学习
- 排序 -- 思路简析(一)
- 啊违法
- 排序 -- 思路简析(二)
- shell 基础 第二部分 ( cut ,sort, wc,uniq,tee ,tr)
- 第七节 独立按键之中断方式
- Label转成URL
- 四阶幻方的穷举求解.
- IDEA快捷键
- 基于NLPIR的lucene 自定义Analyzer实现类
- oracle rman全备恢复实践
- 网页漂浮窗
- 信息学奥林匹克竞赛-小鱼的航程(改进版)