sed命令:
告訴sed對指定行進行何種操作
命令 功能
a 在當前行後新增一行或多行
c 用新文字修改(替換)當前行中的文字
d 刪除行
i 在當前行之前插入文字
l 列出非列印字元
p 列印行
n 讀入下一輸入行,並從下一條命令而不是第一條命令處理
q 結束或退出sed
! 取反
s 用乙個字串替換另乙個字串
s 替換標識
g 全域性替換
i 忽略大小寫
r 從檔案中讀
w 將行寫入檔案
y 將字元轉換成另一字元(不支援正規表示式)
h 把模式空間裡的內容複製到暫存緩衝區
選項
選項 功能
-e 允許多項編輯
-f 指定sed指令碼檔名
-n 取消預設的輸出
-i inplace 直接修改
-r 支援擴充套件元字元
示例:
head -10 /etc/passwd > passwd #取/etc/passwd做演示
# sed '' passwd (這裡將passwd中的內容放到模式空間處理,因為沒有執行任何命令,所以原封不動的返回值)
# sed 'd' passwd (讀到每一行都執行刪除的操作,所以不返回任何值)
# sed '1,9d' passwd (讀1-9行的內容,然後刪除,最後輸出的就只剩第十行)
# sed -r 'p' passwd (內容會重複兩次,因為到模式空間處來會列印一次。然後print會再列印一次)
# sed -rn 'p' passwd (以靜默的方式顯示,進入模式空間被命令處理過的可以輸出,原先內容就不輸出)
# sed -rn '/root/p' passwd (列印帶root的行)
# sed -rn '/^[rot]/p' passwd (列印包含r,o,t開頭的行)
# sed -rn '/^[^root}/p' passwd (列印不包含以r,o,t開頭的行)
# sed -r 's/root/alice/' passwd (替換root為alice,只替換了每行第乙個)
# sed -r 』s/root/alice/g『 passwd (全域性替換,都改)
# sed -r 's#/sbin/nologin#/bin/ok#' passwd (使用#號或者@也可以,一般是帶有/的 替換目錄之類的操作,看起來更清晰)
sed常用命令例項:
替換命令s
擴充套件: ^$代表空行 空格直接敲就行 \t代表tab鍵(製表符)
[root@localhost ~]# sed -r 's/root/alice/' passwd #替換每行第乙個root為alice
[root@localhost ~]# sed -r 's/root/alice/g' passwd #替換每行root為alice
[root@localhost ~]# sed -r '1s/root/alice/g' passwd #只替換第一行的root為alice,想替換幾行可以換成1,ns即可
[root@localhost ~]# sed -ri 's/(^[sl])/#\1/' passwd #將以s或者l開頭的行作為乙個組,替換時在前面加#,\1是呼叫前面組的內容
[root@localhost ~]# sed -r 's/^#//' passwd #將以#開頭的行去掉#號
[root@localhost ~]# sed -r 's/^[ |\t|#]*$/test/' passwd #以空格或tab或#號或空行開頭的行,替換為為test
[root@localhost ~]# sed -r 's#/var#/opt#' passwd #這裡替換乙個目錄帶/,那麼可以將替換的/換成#,看起來更清晰
追加命令a
#變數var=666666
#使用a追加變數的時候使用雙引號,而不是單引號,單引號強引用,會去掉$var原本的含義,而不是我們的變數
[root@localhost ~]# sed -ri '1a test1' passwd #在第一行後追加test1
[root@localhost ~]# sed -ri '$a test$' passwd #在最後一行追加test$
[root@localhost ~]# sed -ri '1,4a test$' passwd #在1-4行後追加test$
[root@localhost ~]# sed -ri "2a $var" passwd #在第二行後追加$var
[root@localhost ~]# sed -ri "\$a $var" passwd #在最後一行追加$var,加\是為了轉義,讓$a就是最後一行的意思
替換命令c
#與s替換大同小異,用新文字修改(替換)當前行中的文字,但這種替換需要準確內容,只有要相同的內容就統統改
[root@localhost ~]# sed -ri '/6666/c7777' passwd #替換6666為7777
[root@localhost ~]# sed -ri '/usedns no/cusedns yes' sshd_config #將usedns no替換為usedns yes
刪除命令d
[root@localhost ~]# sed -ri '1d' passwd #刪除第一行
[root@localhost ~]# sed -ri '1,5d' passwd #刪除1,5行
[root@localhost ~]# sed -ri '/^#/d' passwd #刪除以#號開頭的行
[root@localhost ~]# sed -ri '/^[ |\t|#]*$/d' passwd #刪除帶有空格,tab,#,空行開頭的行
小擴充套件:sed選項-e
#一條sed語句中有多個命令的時候需要加-e,也可以用分號代替
[root@localhost ~]# sed -ri -e '3,5d' -e 's/root/alice/' passwd
[root@localhost ~]# sed -ri 's/root/alice/;3,5d' passwd
sed命令和正規表示式
sed命令 告訴sed對指定行進行何種操作 命令 功能 a 在當前行後新增一行或多行 c 用新文字修改 替換 當前行中的文字 d 刪除行 i 在當前行之前插入文字 l 列出非列印字元 p 列印行 n 讀入下一輸入行,並從下一條命令而不是第一條命令處理 q 結束或退出sed 取反 s 用乙個字串替換另...
sed 正規表示式
如果testfile的內容是 welcome to the world of regexp 現在要去掉所有的html標籤,使輸出結果為 hello world welcome to the world of regexp 怎麼做呢?如果用下面的命令 sed s g testfile 結果是兩個空行,...
sed 常用正規表示式
1.乙個比較實用的正規表示式 匹配html的嵌入 匹配 的嵌入碼 刪除僅由空字元組成的行 sed space d filename 匹配html標籤 例如 從html檔案中剔除html標籤 sed s g space d file.html 例如 要從下列 中去除 及其中包括的 b 4c6c2a65...