文本處理工具
1、查看文件內容
cat -v 顯示非打印字符
-E 顯示$
-T 顯示TAB
-n 顯示行號
-s 將連續的重復空行變成一行
-A = -vET
less
2、文件截取
head -n 行號 顯示前n行
-行號 顯示前n行
-c 字節數 顯示前n個字節
tail -n 行號 顯示后n行
-行號 顯示后n行
-c 字節數 顯示后n個字節
-f 動態顯示
3、按列抽取
cut -d 指定分隔符
-f 選取第幾列
截取列,并指定分隔符

paste paste f1 f2 [f3]
paste -s f1 將文件內容變成一行顯示 也可以用 tr ‘\n’ ‘\t’ 實現
paste -d “” f1 f2 [f3] 合并后的分隔符,默認TAB
4、按關鍵字抽取行
grep –color=auto 將匹配的結果著色顯示
-v 反向匹配
-i 忽略大小寫
-n 顯示的結果前增加行號
-c 僅顯示匹配到結果的行數
-o 僅顯示匹配到的字符串
-q 靜默模式,不輸出任何信息
或者 &> /dev/null
-A# 顯示關鍵字行及向后#行
-B# 顯示關鍵字行及向前#行
nmap -v -sP 172.17.252.0/24 |grep -B1 “Host is up”|grep for |cut -d” ” -f5 |wc -l
-C# 顯示關鍵字向前#行,當前行,及向后#行
-e 關鍵字1 -e 關鍵字2 實現多個選項間的邏輯or關系
-w 匹配整個單詞
-E 使用擴展正則表達式 或egrep
-F 不使用正則表達式 或 fgrep
5、收集文本統計數據
wc -m 字符數
-c 字節 一個漢字3字節,一個單詞一字節
-l 行數
-w 單詞數
6、文本排序
sort -r 執行反方向(由上至下)整理?
-n 執行按數字大小整理
-f 選項忽略(fold)字符串中的字符大小寫
-u 選項(獨特,unique)刪除輸出中的重復行
-t c 選項使用c做為字段界定符
-k X 選項按照使用c字符分隔的X列來整理能夠使用多次
uniq 去除連續的重復行要想去除非連續的行,先用sort排序
-c 顯示連續重復的次數
-d 僅顯示重復的次數
-u 僅顯示不曾重復的行
sort userlist.txt | uniq -c 常配合使用用來統計重復次數排序
7、比較文件
diff -u f1 f2 > diff.log 生成補丁
patch -b f1 diff.log 通過補丁還原文件
正則表達式課后題
留給后人的一筆財富
1、顯示/proc/meminfo文件中以大小s開頭的行(要求:使用兩種方法)
cat /proc/meminfo|grep “^[Ss]”
cat /proc/meminfo|grep -i “^s”
cat /proc/meminfo|grep -e ^s -e ^S
cat /proc/meminfo|grep “^s\|^S”
cat /proc/meminfo|grep “^[s\|S]”
2、顯示/etc/passwd文件中不以/bin/bash結尾的行
grep -v “/bin/bash$” /etc/passwd

3、顯示用戶rpc默認的shell程序
grep “^rpc\>” /etc/passwd | cut -d : -f7
grep -w “^rpc” /etc/passwd | cut -d : -f7

4、找出/etc/passwd中的兩位或三位數
cat /etc/passwd |grep -o “\<[0-9]\{2,3\}\>”

5、顯示CentOS7的/etc/grub2.cfg文件中,至少以一個空白
字符開頭的且后面存非空白字符的行
cat /etc/grub2.cfg |grep “^[[:space:]]\+[^[:space:]]”

6、找出“netstat -tan”命令的結果中以‘LISTEN’后跟任意多
個空白字符結尾的行
netstat -tan|grep “\<LISTEN\>[[:space:]]*$”

7、顯示CentOS7上所有系統用戶的用戶名和UID
cat /etc/passwd |cut -d: -f1,3 |grep “\<[[:digit:]]\{1,3\}\>”$

注:centos7 系統用戶UID<1000
8、添加用戶bash、testbash、basher、sh、nologin(其shell
為/sbin/nologin),找出/etc/passwd用戶名同shell名的行
cat /etc/passwd | grep “\(^.*\)\>.*\/\1$”

9、僅利用df和grep和sort,取出磁盤各分區利用率,并從大到小排序
df |grep ^/dev/sd |grep -o “\b[[:digit:]]\{1,3\}\b%”|sort -rn

注:取出磁盤分區dev/sd
?。?!以下自己做的不確定對錯
1、顯示三個用戶root、mage、wang、的UID和默認shell
[root@localhost ~]# cat /etc/passwd |grep -E “^(root|mage|wang)” |cut -d: -f3,7

2、找出/etc/rc.d/init.d/functions文件行首為某單詞(包括下劃線)后面跟一個小括號的行
[root@localhost ~]# cat /etc/rc.d/init.d/functions |grep “.*()”

3使用egrep取出/etc/rc.d/init.d/functions中其基名

4、使用egrep取出上面路徑的目錄名
[root@localhost ~]# echo /etc/rc.d/init.d/functions |egrep -o “^(/).*\1”

5、統計last命令中以root登錄的每個主機IP地址登錄次數

6、利用擴展正則表達式分別表示0-9、10-99、100-199、200-249、250-255

7、顯示ifconfig命令結果中所有IPv4地址
[root@centos6 ~]# ifconfig |grep -w “inet addr” |tr -s ” ” “:” |cut -d: -f4

[root@centos6 ~]# ifconfig |egrep -o “([0-9]{3}(\.[0-9]{1,3}){3})”

8、將此字符串:welcome to magedu linux 中的每個字符去重并排序,重復次數多的排到前面

原創文章,作者:jieran,如若轉載,請注明出處:http://www.www58058.com/83389