1. 程式人生 > >sed——Shell 文字處理利器

sed——Shell 文字處理利器

一、簡介

sed全稱是stream editor,是一個用於文字過濾和替換的流編輯器,它是一個管道命令,資料來源來自stdin,它的最小處理單位是行(與awk區分)。

二、語法

語法如下:

sed [-nfri] [動作]
-n:使用安靜模式。只有經過sed處理的行才會輸出到螢幕上
-f:直接將sed的動作寫在一個檔案內,-f filename 則可以執行filename內的sed動作
-r:切換為支援擴充套件正則表示式
-i:直接修改讀取的檔案內容,而不是由螢幕輸出

[動作]
[n1[,n2]]function
n1 n2表示應用sed的行數,可以不存在該引數

function引數說明:
a:新增,a的後面可以接字串,這些字串會出現在下一行(新行)
c:替換,c的後面可以接字串,這些字串將替換n1到n2之間的行
d:刪除,刪除n1到n2之前的行
i:插入,i的後面可以接字串,這些字串會出現在上一行(新行)
p:列印,也就是將某個選擇的資料打印出來。通常p會與sed -n一起使用
s:替換,如將1到20行之間的old替換為new:1,20s/old/new/g

三、測試文字

測試文字的內容如下所示,建立一個新檔案regular_express.txt,並將下面的內容拷貝到檔案中即可開始試驗:

Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.^M
GNU is free air not free beer.^M
Her hair is very beauty.^M
I can't finish the test.^M
Oh! The soup taste good.^M
motorcycle is
cheap than car. This window is clear. the symbol '*' is represented as start. Oh! My god! The gd software is a library for drafting programs.^M You are the best is mean you are the no. 1. The world <Happy> is the same with "glad". I like dog. google is the best tools for search keyword. goooooogle yes! go! go! Let's go. # I am VBird

四、刪除例項d

使用sed刪除檔案的2,5行:

[nigel]$ nl regular_express.txt | sed '2,5d'
     1  "Open Source" is a good mechanism to develop programs.
     6  GNU is free air not free beer.^M
     7  Her hair is very beauty.^M
     8  I can't finish the test.^M

如果要刪除第3行到最後一行,則可以這樣:

[[email protected]/vbird_linux]$ nl regular_express.txt | sed '3,$d'
     1  "Open Source" is a good mechanism to develop programs.
     2  apple is my favorite food.

只刪除第2行:

[[email protected]/vbird_linux]$ nl regular_express.txt | sed '2d'
     1  "Open Source" is a good mechanism to develop programs.
     3  Football game is not use feet only.

五、插入例項a,i

[[email protected]/vbird_linux]$ nl regular_express.txt | sed '2a Hello world'
     1  "Open Source" is a good mechanism to develop programs.
     2  apple is my favorite food.
Hello world
     3  Football game is not use feet only.

[[email protected]/vbird_linux]$ nl regular_express.txt | sed '2i Hello world'
     1  "Open Source" is a good mechanism to develop programs.
Hello world
     2  apple is my favorite food.
     3  Football game is not use feet only.

多行的插入比較特殊:

[[email protected]/vbird_linux]$ nl regular_express.txt | sed '2i Hello \
> world!'
     1  "Open Source" is a good mechanism to develop programs.
Hello
world!
     2  apple is my favorite food.
     3  Football game is not use feet only.

多行插入必須要加上\。

六、整行替換c

動作c可以將n1-n2行替換為指定的字串:

[nigel/vbird_linux]$ nl regular_express.txt | sed '2,5c Hello world'
     1  "Open Source" is a good mechanism to develop programs.
Hello world
     6  GNU is free air not free beer.^M

注意,是將n1-n2替換為一行,總行數會減少。

七、列印p

我們以前要列出11-20行需要這麼做“head -n 20 | tail -n 10”,這樣處理很麻煩。有了sed後,就可以簡單直接取出那幾行:

[[email protected] /vbird_linux]$ nl regular_express.txt | sed -n '11,15p'
    11  This window is clear.
    12  the symbol '*' is represented as start.
    13  Oh!     My god!
    14  The gd software is a library for drafting programs.^M
    15  You are the best is mean you are the no. 1.

注意要與-n引數一起使用。

八、部分資料的查詢並替換s

用法

sed 's/舊字串/新字串/g'

使用示例:

[[email protected]/vbird_linux]$ nl regular_express.txt | sed  's/apple/APPLE/g'
     1  "Open Source" is a good mechanism to develop programs.
     2  APPLE is my favorite food.

九、直接修改檔案

sed除了能從管道後去資料外,還能夠直接修改檔案!

[nigel@/vbird_linux]$ cat regular_express.txt
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
[nigel@/vbird_linux]$ sed -i '1,2d' regular_express.txt
[nigel@/vbird_linux]$ cat regular_express.txt
Football game is not use feet only.

不過該功能需要慎用,一旦修改過後就不能恢復。

PS:本文章內容學習自《鳥哥的linux私房菜 基礎學習篇(第三版)》,文章中的所有例項都是親手操作,保證有效。

相關推薦

sed——Shell 文字處理利器

一、簡介 sed全稱是stream editor,是一個用於文字過濾和替換的流編輯器,它是一個管道命令,資料來源來自stdin,它的最小處理單位是行(與awk區分)。 二、語法 語法如下: sed [-nfri] [動作] -n:使用安靜模式。只

awk基礎篇——Shell 文字處理利器

awk sed傾向於以行為單位進行處理,而awk更擅長將一行分為幾段進行處理。 awk的語法 awk用法 | awk '條件型別1{動作1} 條件型別2{動作2} ...' awk '條件型別1{動作1} 條件型別2{動作2} ...' fil

Linux基礎 ------- 文字處理利器sed

Linux文字處理利器 -- sed Sed是UNIX/Linux系統上提供的將編輯工具自動化的編輯器,可以直接編輯檔案。Sed以行為編輯 單位(行編輯器)。相比vim,gedit等編輯工具,Sed編輯檔案只需要一條命名就可以解決很多的 問題,而且Sed對正則表示式的支援也非常好,

02-shell文字處理三劍客之sed

sed 是流編輯器,但是它不會修改原始檔。 sed (流文字編輯器) 用法:sed OPTIONS… [SCRIPT] [INPUTFILE…] -r: 使用擴充套件的正則表示式; -n, –quiet, –silent: 不輸出模式空間的內容; -i:直接編輯原檔案; -

SHELL文字處理三劍客(sed、grep、awk)

一、grep文字過濾器 1. 基本介紹 Global search regular expression and print out theline 全面搜尋研究正則表示式並顯示出來 grep命令是一種強大的文字搜尋工具根據使用者指定的

shell文字處理三劍客(awk sed grep)

一.grep:文字過濾器 根據正則表示式來工作,由正則表示式或者字元及基本的文字字元所編寫的過濾條件 tr 'a-z' 'A-Z' < file          ###把passwd中的小寫轉換為大寫 ^x      ###以x開頭的 x$      ###以

shell 文字處理——使用awk格式化時間戳

date -d @時間戳 "+%Y-%m-%d %H:%M:%S" 也可以內建函式 awk '{print strftime("%Y-%m-%d %H:%M:%S", $1)}' 如果是毫秒級的時間戳要先除以1000;   在 shell 中這樣子處理: awk '{print $1",

01-shell文字處理三劍客之grep

開篇:哈嘍,今天我想寫寫shell程式設計,打算平均一天一篇吧,這樣一個月後就可以進步比較多。 先從shell文字處理三劍客grep、sed、awk開始。聽說啊,要是我不會這個命令,就不好意思說自己會shell程式設計。 1 grep是什麼意思? grep: Global se

Linux Shell 文字處理工具集錦(重點推薦)

        依稀記得某人曾今問過關於linux中的高階用法,當時覺得一臉懵逼,後來才發現,所謂的高階用法,無非是可以被python替換的shell基礎指令碼,及處理10GB資料量以下的linux基礎命令。現在看到了就整理了一下。 1.shell特殊符號

linux 下的shell 文字處理工具

        grep、sed和awk都是文字處理工具,雖然都是文字處理工具單卻都有各自的優缺點,一種文字處理命令是不能被另一個完全替換的,否則也不會出現三個文字處理命令了。只不過,相比較而言,sed和awk功能更強大而已,且已

自然語言處理入門(2)——中文文字處理利器snownlp

SnowNLP是一個python寫的類庫,可以方便的處理中文文字內容。如中文分詞、詞性標註、情感分析、文字分類、提取文字關鍵詞、文字相似度計算等。 snownlp示例如下所示: # -*- coding: utf-8 -*- """ Created on

快收藏!史上最全的 Linux Shell 文字處理工具集錦

本文將介紹Linux下使用Shell處理文字時最常用的工具:find、grep、xargs、so

shell中的文字處理(grep,sed,awk命令)

grep    文字過濾命令sed    行編輯器awk    報告生成器一、grep命令    全面搜尋研究正則表示式並顯示出來grep 命令是一種強大的文字搜尋工具 , 根據使用者指定的“模式”對目標文字進行匹配檢查 , 列印匹配到的行    由正則表示式或者字元及基本文

4.shell程式設計-文字處理三劍客之sed

4.1.sed的選項  sed,流編輯器。對標準輸出或檔案進行逐行處理。 語法格式 第一種:stdout | sed [option] "pattern command" 第二種:sed [option] "pattern command" file  選項 -n&

Linux中sed文字處理工具原理及使用

Sed是什麼? Sed是一種非互動式的流編輯器,可動態編輯檔案;流編輯器則會在編輯器處理資料之前基於預先提供的一組 規則來編輯資料流 Sed本身是一個管道命令,可以分析 standard input 的,主要是用來分析關鍵字的使用、統計等,此外還可 以將資料進行替換、刪除、選中、選取

學習筆記之shell文字處理工具

1.比較檔案的不同diff,comm,cmp 首先建立兩個檔案。內容如下 <span style="font-size:18px;">[[email protected] Practice]# cat Example1 abc def [[email

rpm與yum命令、定時任務和sed文字處理

1、簡述rpm與yum命令的常見選項,並舉例rpm命令: 語法:rpm [OPTIONS] [PACKAGE_FILE] 選項: 安裝: -i, --install 升級: -U, --update,-F, --freshen 解除安裝: -e, --erase 查詢: -q

文字處理工具 sed命令

我們聊聊linux的另一個文字處理工具Sed。 Sed簡介 sed:是一個編輯器,是一個強大的檔案處理工具。 sed作用:用來替換、刪除,更新檔案中的內容。sed能自動處理一個或多個檔案。 sed原理:sed以文字的行為單位進行處理,一次處理一行內容。首先sed把當前處理的行儲存

Sed 文字處理工具原理及使用

Sed是一種非互動式的流編輯器,可動態編輯檔案;流編輯器則會在編輯器處理資料之前基於預先提供的一組規則來編輯資料流。 Sed本身是一個管道命令,可以分析 standard input 的,主要是用來分析關鍵字的使用、統計等,此外還可以將資料進行替換、刪除、選中、選取特定行等功能 Sed主要用

文字處理工具 grep awk sed完全解讀

文字處理工具 grep awk sed完全解讀 正則表示式單字元 1特定字元 : 某個具體的字元 'a' 2範圍內字元 : [a-zA-Z] 3任意字元 : . // grep . file // 如果點放到中括號中[.] 或者用反斜槓'\.' 則它不代表任意一個字元,而代表它本身 例如 grep '