sed命令基礎學習教程

2021-12-30 00:56:59 字數 2777 閱讀 1495

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 最多乙個位址引數 行數在...