Linux命令之sed使用入門概述

來源:互聯網
上載者:User

標籤:text   沒有   影響   ops   功能   tor   工作   使用   script   

sed:stream editor,Linux的一款流編輯器,主要對常值內容進行過濾與替換。使用命令man sed,可以看到對sed命令的介紹

 

下文總體指導思想:

對於sed的工作過程,個人認為如果不是非要把sed的所有功能都學會,是不需要把工作過程搞懂的。絕大部分人,特別針對於想要先儘快上手的人,掌握如何使用基本的sed功能應該比較重要的!

學習sed命令的使用,主要還是結合man sed中的提示來學習:

sed synopsis(大綱):命令的格式

  • sed 【option】【script】【input_file】

sed使用的學問就是在上面三個標記顏色的地區,下面簡述這三個地區:

【option】域:作用主要是指定sed處理完資料後應該怎麼呈現結果(可能描述不是很恰當),比如結果怎麼顯示,要不要對文本本身修改等。

空:當不指定參數時,sed為將處理的常值內容原樣輸出,即不過做什麼操作,檔案的常值內容都先顯示

-n: (silent,也稱為靜默模式)取消預設輸出,即與上面相反。只將進行過相應處理的行列印輸出,沒有匹配到的行不原樣輸出。

-i:sed直接操作常值內容,對其的任何內容修改都會變更檔。(sed預設不是對檔案的常值內容進行操作,而是拷貝其內容到自己的工作空間中在進行操作 )

【script】域:該域的作用是指定對某哪些行做某哪些操作!

  該域其實是分為兩個部分:指定行+操作(address+command),前者可以少但後者不能少!

  • 怎麼表現要處理的行:address
  • 要進行哪些操作:command

  如何表示行呢?有以下選項:(90%的主要寫法,個別較少使用不適合入門理解未寫上)

  1. number:直接指定一個數字,如5,即操作的行對象是第5行
  2. first~step:直接上例子(3~4),指的是從第三行開始匹配,之後每隔4行就被匹配到。因此,第3,7,11,...行將是被操作的行。first指要匹配的第一行,step指從第first行之後,每隔step行的行就被匹配到,linux man手冊的例子是(1~2),匹配的是所有奇數行,作為加深印象的例子
  3. $:直接一個$,匹配文本的最後一行
  4. /regexp/\cregexpc :匹配符合Regex的行,注意:c可以是任一字元只需保證首尾一致!(這裡著重不是講Regex,不熟悉的要參見其他筆記)
  5. addr1,addr2:如(1,5)匹配1到5行,第1行和第5行都將會被匹配到
  6. addr1,+N:如(1,+5)匹配第1行之後,在往後匹配5行,也就是一共匹配6行。即將匹配第addr1行以及接下來N行
  7. addr1,~N:如(10,~8)匹配第10行到第16行(最近一個是8的倍數那一行)。即將匹配第addr1行以及後面最近一個行號是N的倍數的行

  如何表示操作呢?有以下選項:(60%主要寫法,涉及保持空間的參數未列入)

    允許沒有地址或只有1個地址的參數:

  1. =:列印正在操作的行,即當前行
  2. a \text:以另起新行的形式,追加text內容在指定的行後面,支援使用\n實現多行插入
  3. i \text:以另起新行的形式,追加text內容在指定的行前面,支援使用\n實現多行插入
  4. r filename:從指定檔案中讀取內容追加到當前行合并

    允許匹配一個位址範圍的參數:

  1. d:刪除當前行(刪除模式空間中的內容)
  2. c \text:以text內容替換指定的行,支援使用\n實現多行插入
  3. p:列印當前行(即列印當前模式空間)
  4. s/regexp/replacement/:對操作行使用Regex匹配指定內容,用replacement替換
  5. {;}:若一次不止進行一個操作,可以將多個巨集指令引數用{}包括進來,參數之間可以用;隔開,如{a \text;p}

【input_file】域:指定要處理的檔案

 

舉2個栗子

test檔案內容如下:

 

1、sed -n ‘4,7p‘ test01

-n:對應option域; ‘4,7p‘:對應script域,其中 4,7對於address部分, p匹配巨集指令引數部分; test01:對應input-file域

含義:對第4到7行進行列印輸出(p參數),-n選項表示靜默輸出,此時不輸出原文本;不加-n參數時如下:

 

2、sed -i ‘4,+2s/[0-9]/12345/‘ test

當不加-i參數時,修改不影響原常值內容

加-i參數後,修改會被寫入原常值內容

 含義:對test檔案的第4行開始,往後2行(即4,5,6三行)所匹配到的內容進行替換,[0-9]匹配一個數字,將該數字替換為12345,寫入原檔案中。

 

總結:個人認為sed的學習入門以此作為概覽是不錯的選擇,以上的解釋表述了如下問題:

1、sed命令的文法

2、sed命令各種部分的含義,以及分別有哪些簡單,易理解的選擇性參數

3、簡單的使用樣本

 

深入的教程本文沒有涉及,本文中有出錯不妥之處,請讀者提出指正~

Linux命令之sed使用入門概述

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.