HTTP
一個簡單的網頁文件
service iptables stop
echo “<h1>I ?LOVE YOU</h1>” > /var/www/html/index.html
文本排序sort
sort 1.txt ??排序規則先數字后字母,小寫字母在前。
sort -t “:” -k3 /etc/passwd ???用用戶的UID排序,按字符大小。(等于tr -d f)
sort -t “:” -k3 -n /etc/passwd ??數字排序 ???????uniq ??-c ???縮減重復的行并進行統計
cut -d: -f3 /etc/passwd | sort -nr > uid.txt ??將用戶的uid截取出來并排序(數字排序,倒序)
R 隨機排序
sort -u f1 ????????????????????????????去掉重復的行
例子:
sort -t ” ” ?-k 1 access_log |cut -d ” ” -f1 |uniq -c |sort -nr ????統計訪問量并排序
last | sort | cut -d ” ” -f1 |uniq -c ?????????????????統計用戶登陸次數
uniq 命令?????選項-c ??顯示每行重復次數
??-d ??僅顯示重復過的行
??-u ???僅顯示不重復的行
LINUX文本處理 ???(grep,sed,awk)文本處理三劍客
grep 文本處理
例子:
df -h | grep “/dev/sd” | tr -s ” ” “%” | cut -d% -f5 ???過濾硬盤/dev/sd*這些設備使用率
??小技巧:nmap -v 172.168.102.0/24 ?掃描這個網段的活躍IP
grep -e root -e zm /etc/passwd ??過濾/etc/passwd中包含root和zm的行(-e同時執行)
正則表達式
* ????匹配前面字符任意次,包括0次。貪婪模式,盡可能多的或長的匹配。
.* ?????任意長度的任意字符
\? ?????匹配其前面的字符0次或者1次
\+ ?????匹配前面的字符至少一次
\{n\} ???匹配前面的字符n次 ??????????????????注:\取消特殊含義
\{m,n\} ?匹配前面的字符至少m次,最多n次
\{,n\} ???匹配前面的字符最多n次
\{n,\} ???匹配前面的字符至少n次
例子:
將ifconfig這條命令中輸出的所有ip過濾出來
ifconfig | grep -o “[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}”
位置錨定:定位出現的位置
^ ?行首錨定,用于該模式的最左側
$ ?行尾錨定,用于該模式的最右側
^PATTERN$ ?用于模式的匹配整行
^$ 空行
^[[:space:]]*$ ?空白行
\<或\b詞首錨定,用于單詞模式的左側
\>或\b 詞尾錨定,用于單詞模式的右側
\<PATTERN>\ ???匹配整個單詞
例子:
cat /etc/fstab | grep -v “^#” | grep -v “^$” ?????過濾掉/fstab以#浩開頭的行和空行
grep ‘^[[:space:]]\+linux16’ /boot/grub2/grub.cfg | grep -v rescue ???過濾出更改網卡名的行
分組處理
分組:將一個或者多個字符綁定在一起,當作一個整體來處理:\(root\)\+
例:\(string1\+\(string2\)*\)
egrep擴展的正則表達式
字符匹配: ??. 任意單個字符 ???[] 指定范圍的字符 ??[^]不在范圍內的字符
或者:a|b ???a或者b
??C|cat ??C或者cat
??(C|c)at ?Cat或者cat
例子:
ifconfig | grep -oE “([0-9]{1,3}\.){3}[0-9]{1,3}” ????用擴展正則表達式取ip
ls *.rpm |rev | cut -d. -f2|rev|sort |uniq -c ??????統計出光盤鏡像中各種類型的安裝包
ls *.rpm | grep -o “\.\b[0-9a-z_]*\>\.rpm” | sort |uniq -c ?用正則表達式寫出統計光盤
VIM
字符編輯: x:刪除當前光標的字符 ??#x:del光標起始后的字符
???xp:交換光標所在處的字符及其后面字符的位置
???~:轉換大小寫 ??j:刪除光標當前行后的換行符
替換命令: r:替換光標所在處字符
???R:切換成replace模式
可視化模塊:ctrl+v 面向塊
多文件分割:vim -o|-O file1 ??file2
-o:水平分割
-O:垂直分割
單文件窗口分割:ctrl+w,s:split,水平分割
????????ctrl+w,v: ?垂直分割
????Ctrl+w,q :取消相鄰窗口
????ctrl+w,o:取消全部窗口
命令模式:wqall ?退出
sed處理文本的工具
Sed ?選項 ??文件
-n :不輸出模式空間內容到屏幕,即不自動打印
-e :多點編輯
-f :/PATH/SCRIPI_FILE:從指定文件中讀取編輯腳本
-r :支持使用擴展正則表達式
-i.bak :備份文件并原處編輯
script: ?‘地址命令’??????不給地址對全文處理
單地址:#:指定的行,$:最后一行 /pattern/:被模式所能匹配到的每一行
地址范圍:#,# ????從第幾行到第幾行
??#,+# ???從第幾行加若干行之后
??/pat1/,/pat2/ ?從一個模式找到下一個模式
??#,/pat1/ ????從第幾行到下一個模式
~:步進
1~2奇數行
2~2偶數行
例子:
ifconfig |sed -n ‘2p’ ????打印出有本機ip的行
sed -n ‘/^[^#]/p’ /etc/fstab 打印出該文件中非#開頭的行
sed ‘/^#/d’ ?f1 ??刪除該文件中以#號開頭的行
編輯命令:
d:刪除模式空間中匹配的行
P:打印當前模式空間中的內容
a[\]text:在指定的行后面追加文本,支持使用\n實現多行追加
I[\]text:在行前面插入文本
C[\]text:替換行為單行或者多行文本
w/path/somefile:保持模式匹配的行到指定文件
r/path/somefile:讀取指定文件的文本至模式空間中匹配到行后
=:為模式空間中的行打印行號
!:模式空間中匹配行進行取反處理
例子:
cat f1 |sed ?‘5a1234567\n7654321’ ?在該文件中的第五行后追加
cat f1 |sed ?‘5,10a1234567\n7654321’ 在該文件的5到10行后分別追加
cat f1 |sed ?‘5a\ ???1234567\n7654321’ ?在該文件的5行加空格
cat f1 |sed ?‘5\c7654321’ ?????替換該文件的5行
sed ‘=’?f1 給該文件的輸出打行號
cat f1 |sed ’10!d’ ??????除了10行全部刪除
sed工具:
s///:查找替換,支持使用其他分隔符,s@@@,s###
替換標記:g ??行內全局替換
??P ??顯示替換成功的行
??w ?/PATH/TO/SOMEFILE:將替換成功的行保存至文件中
例子:
sed ‘s@UUID@DSB@’ f1 ??將文件中的UUID替換成DSB
sed ‘s/quiet/& net.ifnames=0/’ /etc/default/grub ??在文件中的quiet后面加上net.ifnames=0
sed ‘/GRUB_CMDLINE_LINUX/s/”$/ ?net.ifnames=0 &/’ /etc/default/grub
?????在文件中以GRUB_CMDLINE_LINUX開頭的行最后一個“前面加上net.ifnames=0
ifconfig | sed -n ‘2p’| sed ‘s/^.*net //’| sed ‘s/net.*//’ ?????過濾出ip地址
?
?
?
?
?
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/92330