首頁 > 軟體

Linux sed命令應用

2020-06-16 17:02:47

1. 概述

sed是一個很好的檔案處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將資料行進行替換、刪除、新增、選取等特定工作。

sed命令列格式:

sed [-nefri] ‘command’ 輸入文字

常用設定引數說明:

  • -n: 使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到螢幕上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。
  • -e: 直接在指令列模式上進行 sed 的動作編輯;
  • -f: 直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作;
  • -r: sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
  • -i: 直接修改讀取的檔案內容,而不是在螢幕上輸出。

Linux基礎知識:sed命令  http://www.linuxidc.com/Linux/2017-09/146906.htm

2. 常用命令

  • a: 新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)
  • c: 取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行
  • d: 刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;
  • i: 插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
  • p: 列列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起運作~
  • s:取代,可以直接進行取代的工作。通常這個s的動作可以搭配正規表示式法!例如 1,20s/old/new/g 就是啦!

2. 應用範例

  1. 刪除某行
- 刪除第一行
sed '1d' /home/test/demo.txt

- 刪除最後一行
sed '$d' /home/test/demo.txt

- 刪除第一行至第二行
sed '1,2d' /home/test/demo.txt

- 刪除第二行至最後一行
sed '2,$d' /home/test/demo.txt
  1. 顯示某行
- 顯示第一行
sed -n '1p' /home/test/demo.txt

- 顯示最後一行
sed -n '$p' /home/test/demo.txt

- 顯示第一行至第二行
sed -n '1,2p' /home/test/demo.txt

- 顯示第二行至最後一行
sed -n '2,$p' /home/test/demo.txt
  1. 使用模式進行查詢
- 查詢包括關鍵字ruby所在所有行
sed -n '/ruby/p' /home/test/demo.txt

- 查詢包括關鍵字$所在所有行,使用反斜線遮蔽特殊含義
sed -n '/$/p' /home/test/demo.txt
  1. 增加一行或多行字串
- 第一行後增加字串"drink tea"
sed '1a drink tea' /home/test/demo.txt

- 第一行到第三行後增加字串"drink tea"
sed '1,3a drink tea' /home/test/demo.txt

- 第一行後增加多行,使用換行符n
 sed '1a drink teanor coffee' /home/test/demo.txt
  1. 代替一行或多行
- 第一行代替為Hi
sed '1c Hi' /home/test/demo.txt

- 第一行到第二行代替為Hi
sed '1,2c Hi' /home/test/demo.txt
  1. 替換一行中的某部分

格式: sed 's/要替換的字串/新的字串/g'(要替換的字串可以用正規表示式)

- 替換ruby為bird
sed -n '/ruby/p' /home/test/demo.txt | sed 's/ruby/bird/g'

- 刪除ruby
sed -n '/ruby/p' /home/test/demo.txt | sed 's/ruby//g'
  1. 插入到檔案中
- 在檔案中最後一行直接輸入"bye"
sed -i '$a bye' /home/test/demo.txt
  1. 刪除匹配行
sed -i '/匹配字串/d'  /home/test/demo.txt
  1. 替換匹配行中的某個字串
sed -i '/匹配字串/s/替換源字串/替換目標字串/g' filename

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-11/148400.htm


IT145.com E-mail:sddin#qq.com