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 09:01
下一篇 2016-08-12 09:01

相關推薦

  • Linux的文件系統和目錄

    Linux的文件系統和目錄 Linux目錄和Windows目錄有著很大的不同,Linux目錄類似一個樹,最頂層是其根目錄,如下圖: 文件系統和目錄:   詳細用法如下 / bin     存放用戶使用的基本命令(可執行程序,二進制文件),它是不能單獨分區的 boot    跟內核…

    2017-03-26
  • Linux之旅1

    Linux之旅1  一、描述計算機的組成及其功能 計算機的組成: 1、計算機主要由:CPU(控制器、運算器)、存儲器、輸入設備、和輸出設備(輸入設備、和輸出設備又稱為I/O設備)四部分組成; 計算機個組成部分的功能: CPU:主要有控制器和運算器組成; 控制器:控制器是整個計算機的中樞神經;其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,…

    2016-09-12
  • Linux磁盤與文件系統管理

    對于一塊磁盤,如果我們想要使用的話,需要對磁盤進行分區并建立文件系統。下面,我們就了解一下Linux中的磁盤與文件系統管理 一、MBR 硬盤的0扇區為MBR扇區,其由以下幾部分組成: l  主引導程序(偏移地址0000H–0088H),它負責從活動分區中裝載,并運行系統引導程序。 l  出錯信息數據區,偏移地址0089H&#8…

    Linux干貨 2016-08-28
  • RHCE系列之備份工具—-鏡像備份Rsync

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1431426     我一哥們最近在搞備份,需要用到rsync。因此,鄙人就簡單總結了下rsync,也就有了這篇博文,希望對51…

    Linux干貨 2016-08-15
  • N26-第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相 關示例演示。 文件管理類命令:mkdir rmdir cp rm mv ①mkdir命令:創建目錄 格式:mkdir [OPTION]… DIRECTORY… option -m, –mode=MODE -p, –paren…

    Linux干貨 2017-02-02
  • 計算機組成、Linux命令基礎

    計算機組成 控制器(Control):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。 運算器(Datapath):運算器的功能是對數據進行各種算術運算和邏輯運算,即對數據進行加工處理。 存儲器(Memory):存儲器的功能是存儲程序、數據和各種信號、命令等信息…

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