grep,sed,與正則等

grep:文本過濾(模式:pattern)工具;

grep, egrep, fgrep(不支持正則表達式搜索

sed:stream editor,文本編輯工具;

awk:Linux上的實現gawk,文本報告生成器;a

grep [OPTIONS] PATTERN [FILE…]

grep root /etc/passwd

 

grep

"$USER"

/etc/passwd

grep

'$USER'

/etc/passwd

grep

`whoami`

/etc/passwd

–color=auto: 對匹配到的文本著色顯示;

v -v: 顯示不能夠被pattern匹配到的行;

v -i: 忽略字符大小寫

v n:顯示匹配的行號

v -c: 統計匹配的行數

v -o: 僅顯示匹配到的字符串;

v -q: 靜默模式,不輸出任何信息

-A #after, #

-B #: before, #

-C #context, 前后各#

v e實現多個選項間的邏輯or關系=grep cat -o dog

 

grep –e ‘cat  -e ‘dog

file

v

w整行匹配整個單詞

v

E:使用ERE

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

grep -E, egrep

字符匹配:

. : 匹配任意單個字符;

[] : 匹配指定范圍內的任意單個字符

[^] :匹配指定范圍外的任意單個字符

[:digit:]、[:lower:][:upper:]、[:alpha:]、[:alnum:]

、[:punct:]、[:space:]

匹配次數:用在要指定次數的字符后面,用于指定前面的字

符要出現的次數

*:匹配前面的字符任意次,包括0次 貪婪模式:盡可能長的匹配

.*:任意長度的任意字符

\?:匹配其前面的字符01次  包含行內其他的

\+:匹配其前面的字符至少1

\{m\}:匹配前面的字符m次    貪婪模式

\{m,n\}:匹配前面的字符至少m次,至多n

\{,n\}:匹配前面的字符至多n

\{m,\}:匹配前面的字符至少m


位置錨定:定位出現的位置

^:行首錨定,用于模式的最左側

$:行尾錨定,用于模式的最右側

^PATTERN$: 用于模式匹配整行

^$: 空行

^[[:space:]]*$ :空白行

\< 或 \b:詞首錨定,用于單詞模式的左側

\> 或 \b:詞尾錨定;用于單詞模式的右側

\<PATTERN\>:匹配整個單詞

分組:\(\):將一個或多個字符捆綁在一起,當作一個整體進

行處理,如:\(root\)\+

分組括號中的模式匹配到的內容會被正則表達式引擎記錄 于內部的變量中,這些變量的命名方式為: \1, \2, \3, 

\1: 從左側起,第一個左括號以及與之匹配右括號之間

的模式所匹配到的字符;


sed是一種流編輯器,它一次處理一行內容。處理時,把 當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中的內容

,處理完成后,把緩沖區的內容送往屏幕。接著處理下一

行,這樣不斷重復,直到文件末尾。文件內容并沒有改變

,除非你使用重定向存儲輸出。Sed主要用來自動編輯一 個或多個文件,簡化對文件的反復操作,編寫轉換程序等

用法:

sed [option]… 'script' inputfile

v 常用選項:

        n:不運行模式空間內容進行自動打印一般跟-n使用

         e: 多點編輯

f /PATH/TO/SCRIPT_FILE: 從指定文件中讀取編輯腳本

r: 支持使用擴展正則表達式

-i: 原處編輯,直接更改原件

script:

'地址命令'


 

 

 

v 地址定界:

(1) 不給地址:對全文進行處理

(2) 單地址:

#: 指定的行

/pattern/:被此處模式所能夠匹配到的每一行

(3) 地址范圍:

#,#

#,+#

/pat1/,/pat2/第一次出現pART1到第一次出現PART2

#,/pat1/

(4) ~:步進

1~2 奇數行

2~2 偶數行


 

 

 

v 編輯命令:

d: 刪除模式空間匹配的行

p: 顯示模式空間中的內容,自動打印

a \text:在行后面追加文本,單獨顯示行文本;支持使用\n實現多行追加

i \text:在行前面插入文本;支持使用\n實現多行插入

c \text:替換change行為單行或多行文本

w /path/to/somefile: 保存模式匹配的行至指定文件

r /path/from/somefile:讀取指定文件的文本至模式空

間中匹配到的行后

=: 為模式空間中的行打印行號

!:模式空間中匹配行取反處理


 

 

 

v s///:查找替換,支持使用其它分隔符,s@@@s###

v 替換標記:

g: 行內全局替換

p: 顯示替換成功的行

w /PATH/TO/SOMEFILE:將替換成功的行保存至文件中

 

 

 

 

 

 

 

 

 


 

sed ‘2p’ /etc/passwd

sed –n ‘2p’ /etc/passwd將第二行打印出來

sed –n ‘1,4p’ /etc/passwd 14行顯示出來

sed –n ‘/root/p’ /etc/passwd

sed –n ‘2,/root/p’ /etc/passwd 2行開始

v sed n ‘/^$/=’ file 顯示空行行號

v sed n –e ‘/^$/p’ –e ‘/^$/=’ file

sed ‘/root/a\superman /etc/passwd行后

sed ‘/root/i\superman /etc/passwd 行前

sed ‘/root/c\superman /etc/passwd 代替行


 

sed ‘/^$/d’ file

sed ‘1,10d’ file

nl /etc/passwd | sed ‘2,5d’

nl /etc/passwd | sed ‘2a tea’

sed 's/test/mytest/g' example

sed –n‘s/root/&superman/p’ /etc/passwd 單詞后

sed –n‘s/root/superman&/p’ /etc/passwd 單詞前

sed e ‘s/dog/cat/’ e ‘s/hi/lo/’ pets

sed –i.bak ‘s/dog/cat/g’ pets


 

 

 

v 1、刪除/etc/grub2.conf文件中所有以空白開頭的行行首的

空白字符

 sed -r ‘s/^[[:space:]]+//g’ /etc/grub.conf

 

v 2、刪除/etc/fstab文件中所有以#開頭,后面至少跟一個空 白字符的行的行首的#和空白字符

    sed  "s@^#[[:space:]]\+@@g" /etc/fstab

3、在/root/install.log每一行行首增加#

v   Sed  ‘s/^/#&/g’ /root/install.log

v 4、在/etc/fstab文件中不以#開頭的行的行首增加#

   sed -r “s/^[^#]/#/” /etc/fstab

v 5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名

  目錄名  echo /etc/fstab/sd | Sed -r ‘@[^/]+/?$@\?@ ’

          sed -r "s@\<(.*/+)([^/]+/?)\>@\1@"   目錄名   

         基名sed -r "s@\<(.*/+)([^/]+)\>@\2@"          

        echo '/etc/fstab'|Sed  -r <a href="mailto:'s@.*/'s@.*\<@@'

          后向引用

          Dirname 或者 basename

  6、利用sed 取出ifconfig命令中本機的IPv4地址

v ifconfig | sed -n "2p" | sed -r 's@.*addr\>:@@' |cut   -d " " -f1

v 7、統計centos安裝光盤中Package目錄下的所有rpm文件的 以.分隔倒數第二個字段的重復次數

   Ls *.rpm | sed ‘s@\.rpm@@’| sed ‘s@.*\/@@’ | uniq    -c

      Ls  *.rpm | sed -r‘.*\.(.*)\.rpm$@\1@’| sort | uniq -c   blob.png

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

(0)
sjfbjssjfbjs
上一篇 2016-08-12
下一篇 2016-08-12

相關推薦

  • CentOS、RHEL及Linux的關系

    什么是Linux?    Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。Linux存在著…

    Linux干貨 2016-01-14
  • 常用linux命令小計(1)

    關于linux那些事兒—常用命令小結(1) 系統相關信息 Uname –m顯示處理器的架構 Uname –r顯示正在使用的內核版本 cat /proc/cpuinfo顯示cpu的具體信息 cat /proc/version顯示內核的版本 cat /proc/swaps顯示哪些分區被使用 data顯示系統日期 cal –y顯示當年的日歷 date 021920…

    Linux干貨 2017-02-19
  • linux下小練習(2)

    1、編寫腳本/bin/per.sh,判斷當前用戶對指定的參數文件,  是否不可讀并且不可寫  ?                       2、編寫腳本/root/bin/nologin.sh和login.sh,實現禁止和充 許…

    Linux干貨 2016-08-15
  • bash-條件測試

                     條件測試 1.條件測試          ? 判斷某需求是否滿足,…

    Linux干貨 2016-08-12
  • 文件查找作業

    1、查找/var目錄下屬主為root,且屬組為mail的所有文件 [root@wzc ~]# find /var/ -user root -a -group mail /var/spool/mail /var/spool/mail/root 2、查找/var目錄下不屬于root、…

    Linux干貨 2016-08-15
  • N23-第一周 記流水賬

      機器已經設置好了  屏幕左邊是linux控制臺,屏幕中間放置記事本來記筆記,屏幕右邊是教學視頻,如圖 費我老大勁 筆記本的無線網卡驅動不好弄啊   注重操作實踐,全程跟著操作,一定要照著做,動手啊動手…………..前十五天內容以查漏補缺為主,所以筆記是興之所至,遵循以下原則:&n…

    Linux干貨 2016-09-18
欧美性久久久久