sed是一種流處理編輯器,可以分割、查詢、替換文字。
sed命令的處理流程:行處理
sed [options] 『command』 file
options(選項): -e (使用多個sed命令) ; -n(只輸出經過sed選定的行); -i(將處理結果輸出到檔案);
command(命令): 行定位(正則規則) +sed命令(操作)
p 列印
sed -n 『1p』 列印第1行 a 追加一行
例子:sed 『5a ——————』在第5行後新增分隔線
如果a命令後面跟的是空格需要轉義
sed 『5a \ 『在第5行後面新增空格 i 插入行
例子:sed 『5a ——————』在第5行前插入分隔線 c 替換行
例子:sed 『5c ——————-』 將第5行替換為分隔線
d 刪除行
sed 『5d』 將第5行刪除
sed 『^$d』 刪除空行
s 替換命令
分隔符/,#,用來將命令和正規表示式分開
例子:sed 『s:\%\』 將行裡面第一次匹配的:替換為%
sed 『s:\%\g』 加g後表示全域性替換,會替換每乙個匹配的模式
指定行號 sed 『x』 或sed 『x,y』
例子:sed -n 『2p』 /etc/passwd 列印passwd中第2行
sed -n 『3,4p』 /etc/passwd 列印passwd第3到4行
正規表示式 sed 『/pattern/』或 sed 『/pattern/,/pattern/』
sed -n 『/news/』 /etc/passwd 列印passwd中包含news的行
sed -n 『/news/,/systemd-network/』 列印passwd中從包含news的行到包含systemd-network的行
間隔行 起始行號~間隔大小
例子: sed -n 『1~2p』 /etc/passwd從1行開始,每個2行列印一行
可以用nl命令顯示passwd檔案的行號
$nl passwd|sed -n '1~2p'
1 root:x:0:0:root:/root:/bin/bash
3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
5 sync:x:4:65534:sync:/bin:/bin/sync
7 man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
9 mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
11 uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
13 www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
15 list:x:38:38:mailing list manager:/var/list:/usr/sbin/nologin
17 gnats:x:41:41:gnats bug-reporting system (admin):/var/lib/gnats:/usr/sbin/nologin
19 systemd-timesync:x:100:102:systemd time synchronization,,,:/run/systemd:/bin/false
21 systemd-resolve:x:102:104:systemd resolver,,,:/run/systemd/resolve:/bin/false
23 syslog:x:104:108::/home/syslog:/bin/false
25 messagebus:x:106:110::/var/run/dbus:/bin/false
27 ntp:x:108:114::/home/ntp:/bin/false{} 多條命令
用{}括起來用;分隔
n:讀入下一行
sed -n 『』 /etc/passwd
結果:輸出偶數行
sed 『s/root/\u&/』 /etc/passwd
將root替換為root
\1 第一組 \2第二組 \n 第n組
sed 『s/(^[a-z_-]+):x:([0-9]+):([0-9]+):.*$/user:\1 uid: \2 gid:\3/』 /etc/passwd
取第乙個括號、第二個括號、第三個括號裡的匹配內容
ifconfig eth0|sed -n 『/inet /p』|sed 『s/inet.r:([0-9.]+).$/\1/』
取ip位址
sed 『1r abc.txt』 123.txt
在123.txt的第1行後面插入abc.txt的內容
sed 『1w abc.txt』 123.txt
將123.txt的第1行寫入abc.txt
注意如果abc.txt已經存在,則原有的內容會被丟失。
sed 『/false/q』 /etc/passwd
匹配到模式後就執行q,退出sed
取網絡卡eth0的ip位址
ifconfig eth0|sed -n 『/inet/s/i.r://p』|sed 『s/\ b.$//』
取系統記憶體大小
free -h|sed 『/total/d』|sed 『/swap/d』|sed 『s/mem://』|awk 『』
獲取系統版本號
cat /etc/issue|sed 『s/^([a-za-z]+) ([0-9.]+) (.*$)/\2/』
Sed命令學習
該文章 jims of 肥肥世家 table of contents 1.sed簡介 2.定址 3.sed命令 4.選項 5.元字符集 6.例項 7.指令碼 8.小技巧 可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括行數表示的那兩行 如1...
sed命令學習
與awk命令相似sed命令也用來批量處理文字,同樣是文字處理神器 基本命令形似 sed options command file s 比如hive的hdfs資料通常以日期分割槽,在hive指令碼中如果直接用from unix表示當天日期,會無法識別分割槽導致效率極其低下 通常可以在hive指令碼中先...
sed命令學習
緒 下文僅是本人學習sed時候的一些記錄,歡迎拍磚指正 sed基本編輯命令 建立批註 為換行符 集合有相同位址引數的指令。不執行函式引數 若匹配則不執行 注 n 不是最後一行,執行n命令 sed s replace g 注意使用技巧 列印匹配行的行號 line number 最多乙個位址引數 行數在...