《shell高階程式設計》 sed的使用

2021-09-13 14:09:16 字數 2412 閱讀 3390

sed基本用法

sed的常用命令

sed的條件工具

[root@svr5 ~]# sed  -n 'p' a.txt            //輸出所有行,等同於cat a.txt

[root@svr5 ~]# sed -n '4p' a.txt //輸出第4行

[root@svr5 ~]# sed -n '4,7p' a.txt //輸出第4~7行

[root@svr5 ~]# sed -n '4,+10p' a.txt //輸出第4行及其後的10行內容

[root@svr5 ~]# sed -n '/^bin/p' a.txt //輸出以bin開頭的行

[root@svr5 ~]# sed -n '$=' a.txt //輸出檔案的行數

#看看sed工具的d指令案例集錦(自己提前生成乙個a.txt檔案)

[root@svr5 ~]# sed '3,5d' a.txt //刪除第3~5行

[root@svr5 ~]# sed '/xml/d' a.txt //刪除所有包含xml的行

[root@svr5 ~]# sed '/xml/!d' a.txt //刪除不包含xml的行,!符號表示取反

[root@svr5 ~]# sed '/^install/d' a.txt //刪除以install開頭的行

[root@svr5 ~]# sed '$d' a.txt //刪除檔案的最後一行

[root@svr5 ~]# sed '/^$/d' a.txt //刪除所有空行

#sed工具的s指令案例集錦(自己提前生成乙個a.txt檔案)

#注意:替換操作的分隔「/」可改用其他字元,如#、&等,便於修改檔案路徑

[root@svr5 ~]# sed 's/xml/xml/' a.txt

//將每行中第乙個xml替換為xml

[root@svr5 ~]# sed 's/xml/xml/3' a.txt

//將每行中的第3個xml替換為xml

[root@svr5 ~]# sed 's/xml/xml/g' a.txt

//將所有的xml都替換為xml

[root@svr5 ~]# sed 's/xml//g' a.txt

//將所有的xml都刪除(替換為空串)

[root@svr5 ~]# sed 's#/bin/bash#/sbin/sh#' a.txt

//將/bin/bash替換為/sbin/sh

[root@svr5 ~]# sed '4,7s/^/#/' a.txt

//將第4~7行注釋掉(行首加#號)

[root@svr5 ~]# sed 's/^#an/an/' a.txt

//解除以#an開頭的行的注釋(去除行首的#號)

hello the world

ni hao ma beijing

#本小節的操作使用nssw.txt作為測試檔案。

[root@svr5 ~]# sed 's/.//2 ; s/.$//' nssw.txt
[root@svr5 ~]# sed -r 's/^(.)(.*)(.)$/\3\2\1/' nssw.txt
因原檔案內沒有數字,行首也沒有空格,這裡稍作做一點處理,生成乙個新測試檔案:

[root@svr5 ~]# sed 's/[0-9]//' nssw.txt

以nssw2.txt檔案為例,刪除所有數字、行首空格的操作如下:

[root@svr5 ~]# sed -r 's/[0-9]//g;s/^( )+//' nssw2.txt

為檔案中每個大寫字母新增括號

[root@svr5 ~]# sed -r 's/([a-z])/[\1]/g' nssw.txt

多行文字操作

寫乙個指令碼:

思路如下:

#!/bin/bash

a=$(sed -n '/bash$/s/:.*//p' /etc/passwd)

for i in $a

do

pass1=$(grep $i /etc/shadow)

pass2=$(pass1#*.)

pass3=$(pass2%%.*)

echo "$i ---> $pass3"

done

總結知識點:

sed [選項] 『條件指令』 檔案

sed高階程式設計(一)

d 刪除多行組中的單隔行。p 列印多行組中的單隔行。next命令,小寫n命令使sed移動到資料流中文字的下一行。cat data the first meeting of the linux system administrator s group will be held on tuesday.a...

shell程式設計 sed的選項

sed 引數 partern commond file 標準輸出 sed sed 引數 partern commond n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則只有經過sed 特殊處理的那一行 或者動作...

shell指令碼程式設計之sed

sed 選項 指令 動作 檔案 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自 stdin 的資料一般都會被列出到終端上。但如果加上 n 引數後,則只有經過sed 特殊處理的那一行 或者動作 才會被列出來。f 直接將 sed 的動作寫在乙個檔案內,f filename 則可以執...