正則表達式grep,sed

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,sedawk)文本處理三劍客

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中包含rootzm的行(-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:刪除當前光標的字符 ??#xdel光標起始后的字符

???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’ 在該文件的510行后分別追加

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

(1)
zhangmengzhangmeng
上一篇 2018-03-13 15:23
下一篇 2018-03-13

相關推薦

  • 一個PHP程序員學習運維的轉型

         我是一位PHP開發工程師,平時負責前端、后端以及服務器端的工作,但是稱不上是個牛逼的程序員。網上熱烈討論一則傳聞,“全棧工程師”(Full Stack Engineer),要求應征者對開發堆棧的每個方面都有所掌握。那究竟何為 “全棧工程師”呢?從字面上來理解,全棧工程師必須熟悉開發堆棧的每一個層次,或者至少熟悉絕大多數…

    Linux干貨 2017-04-02
  • Linux下的進程調度與作業管理

    Linux下的進程調度與作業管理 一、概述 1.1 進程的相關概念: 通過前面的幾個章節,我們幾乎已經學習了很多的linux的基礎,這個章節我們講一下linux下的進程管理,就像windows 下的進程一樣,我們知道windows 下有一個任務管理器,專門用來管理進程,我們首先看一下windows 的任務管理器: 從這2個圖我們可以看出,windows 下的…

    Linux干貨 2016-10-17
  • N25-第三周博客作業

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@node1 ~]# who | cut -d" " -f1 | uniq (unknown) root 2、取出最后登錄到當前系統的用戶的相關信息…

    Linux干貨 2016-12-17
  • N22-第一周(作業)

    馬哥教育網絡班22期-第一周課程練習:   一.描述計算機的組成及其功能       計算機組成:CPU :包含控制器,運算器,寄存器,緩存。通過時序復用的方式來處理加工來自輸入設備的指令或數據,協調各組件之間的工作       存儲器(內存):編址存儲單元陣列,用于暫時存放CP…

    Linux干貨 2016-08-13
  • 進程與計劃任務

    PID 進程號,用來標記各個進程;CentOS6中起始的第一個進程為init7中為systemd 進程優先級: 系統優先級:數字越小,優先級越高 0-139(4,5中) 各有140個運行隊列和過期隊列 0-98,99(6中) 實時優先級:99-0:值越大優先級越高 nice值:-20到19,對應系統優先級100-139或99 進程狀態: 運行:running…

    2017-05-14
  • 計算機的組成及其功能

    1.計算機的組成及其功能 1.1計算機的硬件基本結構 從ENIAC到當前最先進的計算機都采用的是馮·諾依曼體系結構分別是:控制器,運算器,存儲器,輸入與輸出設備 控制器:將指令逐條從存儲器中取出,經譯碼分析后向全機發出相應         的操作控制信號作用于其他部件,使各部件有…

    Linux干貨 2016-10-28
欧美性久久久久