正則表達式 筆記

重新復習的筆記

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 19:31

相關推薦

  • DHCP實驗

    前期準備 僅主機網段??????????? ? ? ? ? ? ? ? ? ? ?? /* 取消dhcp */ /* 虛擬機啟動過程中 會卡住一會 找地址 */ yum install dhcp 服務端 網卡配置 靜態地址 重啟網絡 systemctl start dhcpd??????????????? /* 報錯 沒有配置文件 */ 編輯配置文件 sys…

    Linux筆記 2018-05-29
  • linux 基礎命令

    linux 基礎

    Linux筆記 2018-04-01
  • 課后實操

    1.怎么查看設備UUID? [root@centos6 ~]#blkid /dev/sda1: UUID=”625dc9a7-69cd-478f-892c-0d4a664b72fe” TYPE=”ext4″ /dev/sda2: UUID=”070d3bc7-773e-4d27-bf0e-81221…

    Linux筆記 2018-04-23
  • 輸入輸出重定向

    重定向就是改變默認位置 ps aux 顯示進程號 大于號(只處理正確信息),以覆蓋的方式把命令輸出到指定的文件,如果a > b;c >b;c會把之前a覆蓋到b的內容覆蓋到。為了保留a和c的數據,這時候用追加的方式解決,雙大于號就用以追加的方式 set -c 不能覆蓋 set +c 允許覆蓋 |> 強行覆蓋 清零|> /data/sky…

    Linux筆記 2018-07-30
  • 文本處理工具之grep

    三劍客之grep

    Linux筆記 2018-04-08
  • 基于Memcached的session server

    session server:將Tomcat的session信息保存在Memcached中,實現session server 前提: 兩個Tomcat節點,兩個Memcached節點,一個nginx節點;Tomcat需要使用到Memcached-session-manager這個Java類,即上面所說的調用了Memcached提供的API的模塊,以達到Mem…

    Linux筆記 2018-03-31
欧美性久久久久