2015-10-18 118 views
0

這部分是全文:有鬧明白的正則表達式

We will now present the Linux ls command 
    ... here description of ls 

We will now present the Linux cd command 
    ... here description of cd 
    ... more description 
Done 

這下面的sed替換正則表達式應用上的文字

sed 's/.*Linux \(.*\) .*/\1:/' ex2.txt 

這給下面的輸出

​​

有人能告訴我它是如何工作的?

+0

什麼你不明白嗎? –

+0

https://regex101.com/和http://regexr.com/是你的朋友。 –

回答

3

.*Linux :在「Linux」這個詞之前的任何內容以及該詞本身後跟一個空格。 (We will now present the Linux 

\(.*\):然後用括號捕獲一些東西。 (lscd

 .*:然後另外一個空間和別的。 ( command


被替換:

\1::無論第一捕獲組已經捕獲,用冒號(ls:cd:


在隨後這種情況下,.匹配任何字符,除了換行符

\(.*\)比賽只有一個詞,因爲那裏有「LINUX」之前是一個空間,必須有這個詞的一個空間:命令名稱和「命令」一詞之間的空間。

如果使用擴展正則表達式(sed -r ...),則括號不必使用反斜槓進行轉義。

所以,你也可以這樣寫:

sed -r 's/.*Linux (.*) .*/\1:/' ex2.txt