1. 程式人生 > >Linux 命令之 sed

Linux 命令之 sed

sed
stream editor的縮寫.
流編輯器,用程式的方式來編輯文字,相當的hacker啊。
sed基本上就是玩正則模式匹配,所以,玩sed的人,正則表示式一般都比較強。

AWK之所以叫AWK是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字元, 是貝爾實驗室1977年搞出來的文字出現神器, sed比awk還要年長2-3歲。
都稱得上是上古神器。

下面學習幾個sed常見使用:

測試使用的文字內容

[[email protected]]# cat sed.test 
I
love her. I love her. I love her. I love her. I love her. I love her.

1. s 替換命令

a. 把文字中的her 替換成Joey
s表示替換命令,/her/表示匹配her,/Joey/表示把匹配替換成Joey,/g 表示替換行內所有的匹配

[[email protected]]# sed "s/her/Joey/g" sed.test   
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.

上面的sed命令並沒有對檔案的內容改變,只是把處理過後的內容輸出介面

如果要修改所操作檔案的內容,可以加上 -i 引數直接修改檔案內容
sed -i “s/her/Joey/g” sed.test

b. 其他一些常用的匹配
在每行最前面加#字元:

$ sed 's/^/#/g' sed.test

在每一行最後面加—:

sed 's/$/ --- /g' sed.test

c. 多行匹配
如果我們需要一次替換多個模式,可參看下面的示例:(第一個模式把第一行到第三行的I替換成Jobs,第二個則把第3行以後的I替換成了He also)

[root@localhost]# sed '1,3s/I/Jobs/g; 3,$s/I/He also/g' sed.test 
Jobs
love Joey. Jobs love Joey. Jobs love Joey. He also love Joey. He also love Joey. He also love Joey.

我們可以使用 & 來當做被匹配的變數,然後可以在變數左右加點東西

[[email protected] ]# sed 's/Joey/{&}/g' sed.test 
I love {Joey}.
I love {Joey}.
I love {Joey}.
I love {Joey}.
I love {Joey}.
I love {Joey}.

d. a命令和i命令
a命令就是append, i命令就是insert,它們是用來新增行的。
在第一行插入

[[email protected] ]# sed "1 i ------------insert---------------- " sed.test          
------------insert---------------- 
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.

在最後一行插入

[[email protected] ]# sed "$ a ------------insert---------------- " sed.test 
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.
------------insert----------------

如果不指定位置,則每一行後面都會新增一行

e. 刪除匹配行 d命令

[[email protected]]# cat sed.test 
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.
------------insert---------------- 
[[email protected]]# sed '/insert/d' sed.test 
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.

f. 列印命令 p命令
使用 -n 可以只輸出匹配的行,就像linux 的grep 命令
如果不使用-n則未匹配的正常輸出,匹配的輸出兩次

[[email protected] luffy]# sed -n '/Joey/p' sed.test 
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.
I love Joey.

相關推薦

linux命令sed

替換字符 tab str linux命令 inux lena 文件 insight 批量替換 sed命令格式 sed [options] ‘command‘ file(s) 替換:s命令 sed ‘s/原字符串/替換字符串/‘ 末尾的“g”代表替換全部,否則只替換每

Linux 命令 sed

sed stream editor的縮寫. 流編輯器,用程式的方式來編輯文字,相當的hacker啊。 sed基本上就是玩正則模式匹配,所以,玩sed的人,正則表示式一般都比較強。 AWK之所以叫AWK是因為其取了三位創始人 Alfred Aho,Pet

Linux下常用命令sed學習總結

linux sed sed命令 正則表達式 sed總結 Sed功能說明:Sed是linux下一個強大的文本文件處理工具,通過對文件增加、刪除、查找、查詢操作,配合正則表達式以實現工作中的各種需求。同時也是一名運維人員必須掌握的核心技能。---------------------------

Linux常用命令sed

UC perm wid cross 每次 orm separate 當前 命令操作 sed NAME sed - stream editor for filtering and transforming text 文本流編輯,sed是一個“非交互式的”面向字符流的編輯器

Linux常用命令sed(2)

代碼 並不會 獨立 command 不存在 chan posix 通用 示例 Sed SED的英文全稱是 Stream EDitor,它是一個簡單而強大的文本解析轉換工具,在1973-1974年期間由貝爾實驗室的Lee E. McMahon開發,今天,它已經運行在所有的

Linux 文本查看命令sed

Linux 文本查看命令之sed的簡單操Stream Editor 流編輯器 做行處理的默認不直接編輯原文件,在內存中進行處理(但是會整篇處理),臨時存放的空間叫做pattern space(模式空間)。如果可以被關鍵字匹配,然後就進行編輯(編輯完成後,可以將新的內容放入hold space,保持空間),如果

Linux常用基本命令:三劍客命令-sed

選項 插入 最後一行 文件處理工具 learn bye use -s linux sed是一個很強大的文件處理工具,主要是以行為單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作 格式:sed [option] [command] [file] 常用命令:

Linux基本命令sed

語法格式sed [options] [sed-commands] [input-file]選項 [sed命令] [輸入檔案] 說明1、sed-commands既可以是單個sed命令,也可以是sed命令組合2、input-file(輸入檔案)是可選項,sed還能夠從標準輸入,如:管道獲取輸入 命令流程 s

Linux基礎命令sed用法

sed :流編輯器     1.sed:Stream Editor   行處理工具,流編輯器  對檔案內容逐行進行處理呼叫操作並顯示到STDOUT       &nbs

Linux Shellsed命令

ed是一個很好的檔案處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將資料行進行替換、刪除、新增、選取等特定工作,下面先了解一下sed的用法 sed命令列格式為: sed [選項] ‘命令’ 輸入文字  sed [-nefri] ‘command’ 輸入文字

Linux命令stty

repl 位置 而不是 connector 啟動 previous dsr 根據 pass 用途說明 stty命令用於顯示和修改終端行設置(change and print terminal line settings)。 常用參數 stty命令不帶參數可以打印終端行設置,

Linux命令kill

多種方式 輸入 字符 指定 避免 選項 con 擴展 firefox 精通Linux的kill命令    不管你使用哪種操作系統,你一定會遇到某個行為失常的應用,它把自己鎖死並拒絕關閉。在Linux(還有Mac)。你能夠用一個"kill"命令強制終結它。在這個教程中,我

Linux命令netstat

unknown 網絡相關 mes packet forward 提示 send 狀態 統計 Linux命令之netstat詳解 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerad

linux 命令 apt-get

檢查 end 修正 blog font span man 損壞 /var/ apt-get 是一個下載安裝軟件包的簡單命令行接口 使用方法: apt-get [OPTIONS] [COMMANDS] [PACKAGE_NAMES] OPTIONS:

linux 命令 watch

html shell ati watch命令 art track pwd -s 周期 watch能夠幫你監測一個命令的執行結果,省得你一遍遍的手動執行。在Linux下。watch是周期性的執行下個程序。並全屏顯示執行結果。你能夠拿他來監測你想要的一切命令的結果變化,

Linux命令CP詳解

linux命令之cp詳解Linux命令之CP詳解嘿嘿,又一周過去了,大家過的怎麽樣呢,在這一周時間裏,小編可是又學到不少新知識呢。今天呢,小編就和大家分享一下Linux中我們常用的CP的命令,這裏的cp可是copy的簡寫噢。(容我嘚瑟一下) 學過linux的都知道,在我們操作的過程中,我們常常會用到cp這個命

linux命令head、tail命令具體解釋

-c pri fadein rip lin comment pen inux ont head 語法 樣例 tail 語法 樣例 head和tail組合使用方法舉例 head 語法 head [-n -k ].

Linux命令——id

命令 linux id id命令是查看用戶相關屬性信息。顯示真實有效的id(UID)和組ID(GID),UID是對應用戶的單一身份標識,GID則是對應多個UID。常用參數:  -g或--group  顯示用戶所屬群組的ID。  -G或--groups  顯示用戶所屬附加群組的ID。  -n或--n

linux 命令top

設置 smd gnome ont str 優先級 ive set tld top命令是顯示當前系統正在執行的進程相關信息。包含進程ID、內存占用率等;top命令格式例如以下: top [OPTIONS] OPTIONS: -b 批處理 -c

移位運算、Arrays中的copyOf、java.util.AbstractCollection、linux命令tail

xca eid width gte 技術分享 blank strac eba tail 移位運算:http://www.cnblogs.com/hongten/p/hongten_java_yiweiyunsuangfu.html。 ---------- Arrays中的c