1. 程式人生 > >shell特殊符號 cut命令 、sort_wc_uniq命令 tee_tr_split命令

shell特殊符號 cut命令 、sort_wc_uniq命令 tee_tr_split命令

shell 特殊符號 cut命令

一、shell特殊符_cut命令
技術分享圖片
脫義字符:
[root@linux-01 ~]# c=\$a\$b //和 #c=‘$a$b‘ 效果一樣
[root@linux-01 ~]# echo $c
$a$b

管道符
技術分享圖片
cut 分割
[root@linux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1 //取第一段
root
bin
[root@linux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2 //取第1,第2段
root:x
bin:x
[root@linux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3 //取1-3段

root:x:0
bin:x:1

[root@linux-01 ~]# cat /etc/passwd head -2 cut -c 4 //-c,指定第幾個字符
t

二、sort_wc_uniq命令
sort 排序
[root@linux-01 ~]# sort /etc/passwd //普通沒有特殊符號的按照a b c d e 26個英文字母排序
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
hll:x:1001:1002::/home/hll:/bin/bash

[root@linux-01 ~]# sort filename //文件中有特殊符號、數字的先排特殊符號、數字、字母
(
[
}
11
345
88
aadgg
bbbb
dgfggf

sort -n選項
[root@linux-01 ~]# sort -n filename //-n選項以數字排序,和把特殊符號和字母都識別為0
(
[
}
aadgg

bbbb
dgfggf
11
88
345

sort -nr filename ,-r選項,反排序,最大在前面,最小的在後面

#wc -l //統計行數的命令
[root@linux-01 ~]# wc -l 2.txt //統計2.txt文件行數
19 2.txt
#wc -m //統計字符數的命令
[root@linux-01 ~]# wc -m 2.txt //統計2.txt文件的字符數
85 2.txt

#cat -A 2.txt //cat -A可以查看所有字符包括隱藏的,可以看到每行字符後面有一個換行符
#wc -w 2.txt //統計詞的數量
[root@linux-01 ~]# wc -w 2.txt
18 2.txt

#uniq //去重復的,但是去重之前先要進行排序,然後再去重
可以先排序,使用 #sort 2.txt , 然後再 #sort 2.txt |uniq

三、tee_tr_split命令
tee 和 > 類似,重定向的同時還在屏幕顯示
清空一個文件的命令:#> 2.txt //清空2.txt文件內容
sort 2.txt |uniq -c |tee 4.txt //把2.txt文件去重之後重定向輸入到4.txt文件中,|tee的作用就是重定向,把管道前面的結果打印在屏幕上
#sort 2.txt |uniq -c |tee -a 4.txt //tee -a 就是追加

tr 命令是用來替換字符的
[root@linux-01 ~]# echo "linux" |tr ‘[ln]‘ ‘[LN]‘ //將ln替換為LN
LiNux
[root@linux-01 ~]# echo "linux" |tr ‘ln‘ ‘LN‘ //或者也可以寫成這樣
LiNux
[root@linux-01 ~]# echo "linux" |tr ‘[a-z]‘ ‘[A-Z]‘ //可以指定範圍
LINUX

split 切割
#split -b 100M bigfile //-b選項,指定切割文件大小,不寫單位1000後面默認單位是字節
#split -l 1000 bigfile //-l選項,指定切割文件行數
#find /etc/ -type f -name "*conf" -exec cat {} >> 3.txt \; //查找/etc下的.conf文件並把它追加到3.txt
#split -b 1000 3.txt //指定切割文件大小為1000字節
[root@linux-01 ~]# split -b 100K 3.txt abc //指定切割文件前綴為abc
[root@linux-01 ~]# ls
2.txt 4.txt abcab 3.txt abcaa abcac
#split -l 1000 3.txt // 切割1000行

四、shell特殊符號下
技術分享圖片
[root@linux-01 ~]# for i in seq 1 10 //執行多條命令

do
echo $i
done
1
2
3
4
5
6
7
8
9
10
[root@linux-01 ~]# for i in seq 1 10; do echo $i; done //使用向上翻歷史命令,列出來的是用分號隔開的多條命令

[root@linux-01 ~]# ls 3.txt ; wc -l 2.txt //兩條命令一起執行中間加分號
3.txt
19 2.txt

正確重定向,會把之前文件覆蓋掉
> 追加重定向正確的輸出
2> 輸出錯誤內容重定向
2>> 把錯誤信息追加重定向
&> 把正確錯誤內容輸出到一個文件中
[ ] 指定字符中的一個,[0-9], [a-zA-Z], [abc]
|| 用在shell中表示或者的意思
#ls 1.txt || wc -l 2.txt // ||表示當第一條命令執行成功後就不執行第二條命令,第一條執行不成功則執行第二條
#ls 1.txt && wc -l 2.txt //&&表示前面的命令執行成功了才會執行後面的命令
#[ -d abcd ] || mkdir abcd //判斷abcd目錄是否存在,如果存在就不創建,如果不存在,就創建

shell特殊符號 cut命令 、sort_wc_uniq命令 tee_tr_split命令