正則表達式 筆記

重新復習的筆記

timg

文本處理工具

文本處理工具三劍客 之一grep

grep文本過濾工具 ,按行過濾

分為 grep egrep fgrep(不支持正則表達式)

centos 7和centos6 用的grep不一樣是因為centos用到的是別名alias grep=’grep –color=auto’

grep 可以支持變量和命令

grep -v 顯示不包含目標的行

grep -i 忽略大小寫

grep -n 匹配目標的行號

cat -n匹配目標對的行號cat -n /etc/passwd |grep root

grep -c 匹配的行數

grep -o 只顯示搜索字符串本身,不顯示其他字符

grep -q 搜索的目標不顯示,只關心包含不包含目標,不關心在什么行

&> /dev/null 不顯示搜索信息

可以用echo?查看0 是成功 其他是錯誤

grep -A 包含目標的后幾行 例 grep -A3 包含目標的后3行

grep -B 包含目標的前幾行 例 grep -B3 包含目標的前幾行

grep -C 包含目標的前后幾行 例 grep -C3 包含目標的前后各3行

nmap 網絡掃描 namp -v -sP 掃描特定的網段

centos 6 臨時掛載 cd /misc cd cd/

grep root /etc/passwd |grep bash 并且的關系 先搜索root在搜索bash

grep -e 目標 -e 目標 或的關系例: grep -e root -e wang /etc/passwd 一行只包含root 或wang 不包含在一起

grep -w 匹配單詞 例:echo x abc |grep -w abc

正則表達式 REGEXP regexp

正則表達式 寫法靈活

基本正則表達式 BRE 擴展正則表達式ERE

正則表達式引擎 采用不同算法,檢查處理正則表達式的軟件模塊 PCRE 居于perl語言的正則表達式,perl語言太靈活

正則表達式特定的字符 元字符 ,這些符號有特定的功能 。

元字符分為:字符匹配 ,匹配的次數 ,位置錨定 分組

字符匹配

. 點表示 一個字符串里的一個字符

[] 表示中括號里的任意一個字符

grep r[ab]t cat /etc/passwd 搜索rat 或rbt

匹配次數

*某一個字符出現的次數 ,包括0次

“`
* 例echo axxxb |grep x*b
“`

.* 任意長度的字符串

ls |grep .*\.txt 查找 .txt結尾的文件

\? 前面出現的字符出現一次或0次

例:echo aabccc |grep “a[b-z]\?c

\ + 前面的字符一個以上

\ { \ } 前面出現的字符出現多少次

“`
grep “go\{16\}” goohle.txt 前面的字符出現16次
grep “go\{16,\}” goohle.txt 前面的字符出現大于16次
grep “go\{,16\}” goohle.txt 前面的字符出現小于16次
“`

在中括號里的點就是點本身的意思

位置錨定

^行首錨定 grep “^root” /etc/passwd root開頭的行

$ 行尾錨定 grep “bash$” /etc/passwd bash結尾的行

grep -v “^#” |grep “^$” 表示非#號開頭的行

grep -v “^[[:space:]]*$” 只顯示非空的行

\ < 單詞詞首 cat /etc/passwd |grep “\ <root” root在詞首 rootwer

\ > 單詞詞尾cat /etc/passwd |grep “root\ >” root在詞尾 wetroot

cat /etc/passwd |grep ” \ <root\ >

也可以寫成 \b

分組

“`
echo zhouzhouzhou |grep “\(zhou\)\{3\} 希望單詞出現多少次
“`

“`
cat /etc/passwd |grep -w “^\(.*\):.*/\1$” 查看用戶和結尾相同的行
“`

(a|b) 表示a或b

“`
cat /etc/passwd |grep “^\(a\|b\).*” 查看a或b開頭的行
“`

練習題

1、顯示三個用戶root、 mage、 wang的UID和默認shell

“`
cat /etc/passwd |grep -e “^root” -e “^mage” -e “^wang” |cut -d: -f 3,7
“`

2、找出/etc/rc.d/init.d/functions文件中行首為某單詞(包括下劃線)后面跟一
個小括號的行

“`
cat /etc/rc.d/init.d/functions |egrep “^(.*_)()”
“`

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

“`
echo /etc/rc.d/init.d/functions |egrep -o “^[^/].*$”
echo /etc/rc.d/init.d/functions |egrep -o “/(.*)/(.*)/”
“`

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

“`
last |grep “wang” |tr -s ” ” |cut -d” ” -f 3 |egrep -o “[0-9.]{7,}” |uniq -c
“`

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

“`
egrep -o “\<(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>”
“`

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

“`
echo welcome to magedu linux |grep -o “.” |sort |uniq -c |sort -nr
“`

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96507

(0)
周亞飛周亞飛
上一篇 2018-04-18 11:18
下一篇 2018-04-18

相關推薦

  • Shell腳本寫的備份還原工具 –reset.sh

    reset.sh腳本分兩個功能模塊,備份模塊和還原模塊;
    備份:備份指定文件到當前目錄,以備份時日期做為文件名
    還原模塊:可選擇性的還原指定時間的備份記錄

    2018-04-14
  • 第一周作業

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。
    4、說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相應的示例來闡述。
    5、如何在Linux系統上獲取命令的幫助信息,請詳細列出,并描述man文檔的章節是如何劃分的。
    6、請羅列Linux發行版的基礎目錄名稱命名法則及功用規定。

    Linux筆記 2018-05-13
  • Linux計算MD5和Sha1的命令

    Linux計算MD5和Sha1的命令

    Linux筆記 2018-06-07
  • LAMP的實現

    php的兩種工作模式一種以模塊方式;一種以fcgi方式

    2018-06-23
  • DNS服務

    DNS

    2018-07-19
  • 網絡管理。

    網絡管理: IEEE 802.3 (以太網)(物理層及數據聯絡層)wifiFDDI 城市網絡OSI 開放系統互聯,網絡國際ISO 國際標準化組織ATM 異步傳輸模式細軸網線 最大185m粗軸網線 最大500m普通網線 最大100m 單工:單向傳輸數據雙工:雙向傳輸數據全雙工:同時雙向半雙工:輪流雙向 沖突域:網橋可以隔離沖突域。廣播域:單播:unicast廣…

    Linux筆記 2018-05-13
欧美性久久久久