2021-05-12 14:32:11
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. 應用範例
- 刪除某行
- 刪除第一行
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
- 顯示某行
- 顯示第一行
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
- 使用模式進行查詢
- 查詢包括關鍵字ruby所在所有行
sed -n '/ruby/p' /home/test/demo.txt
- 查詢包括關鍵字$所在所有行,使用反斜線遮蔽特殊含義
sed -n '/$/p' /home/test/demo.txt
- 增加一行或多行字串
- 第一行後增加字串"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
- 代替一行或多行
- 第一行代替為Hi
sed '1c Hi' /home/test/demo.txt
- 第一行到第二行代替為Hi
sed '1,2c Hi' /home/test/demo.txt
- 替換一行中的某部分
格式: 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'
- 插入到檔案中
- 在檔案中最後一行直接輸入"bye"
sed -i '$a bye' /home/test/demo.txt
- 刪除匹配行
sed -i '/匹配字串/d' /home/test/demo.txt
- 替換匹配行中的某個字串
sed -i '/匹配字串/s/替換源字串/替換目標字串/g' filename
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-11/148400.htm
相關文章