" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell sed命令的具體使用

 更新時間:2023年06月01日 09:22:26   作者:陳晨塵(NaSa)  
本文主要介紹了shell sed命令的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

sed 命令

sed 編輯器

  • sed是一種流編輯器,流編輯器會在編輯器處理數(shù)據(jù)之前基于預先提供的一組規(guī)則來編輯數(shù)據(jù)流。
  • sed編輯器可以根據(jù)命令來處理數(shù)據(jù)流中的數(shù)據(jù),這些命令要么從命令行中輸入,要么存儲在一個命令文本文件中。

sed 的工作流程的三個過程

  • 讀?。簊ed 從輸入流(文件、管道、標準輸入)中讀取一行內容并存儲到臨時的緩沖區(qū)中(又稱模式空間,pattern space)。
  • 執(zhí)行:默認情況下,所有的sed 命令都在模式空間中順序地執(zhí)行,除非指定了行的地址,否則sed 命令 將會在所有的行上依次執(zhí)行。
  • 顯示:發(fā)送修改后的內容到輸出流。在發(fā)送數(shù)據(jù)后,模式空間將會被清空。在所有的文件內容都被處理完成之前,上述過程將重復執(zhí)行,直至所有內容被處理完。

在所有的文件內容都被處理完成之前,上述過程將重復執(zhí)行,直至所有內容被處理完。

注意:默認情況下所有的sed命令都是在模式空間內執(zhí)行的,因此輸入的文件并不會發(fā)生任何變化,除非是用重定向存儲輸出。

命定格式

sed -e '操作' 文件1 文件2 ...
sed -n -e '操作' 文件1 文件2 ...
sed -f 腳本文件 文件1 文件2 ...
sed -i -e '操作' 文件1 文件2 ...
sed -e 'n{
操作1
操作2
...
}' 文件1 文件2 ...

常用選項

-e 或--expression=:表示用指定命令來處理輸入的文本文件,只有一個操作命令時可省略,一般在執(zhí)行多個操作命令使用
-f 或--file=:表示用指定的腳本文件來處理輸入的文本文件。
-h 或--help:顯示幫助。
-n --quiet 或 silent:禁止sed編輯器輸出,但可以與p命令一起使用完成輸出。
-i 直接修改目標文本文件。

常用操作

s:      替換,替換指定字符。
d:      刪除,刪除選定的行。
a:      增加,在當前行下面增加一行指定內容。
i:      插入,在選定行上面插入一行指定內容。
c:      替換,將選定行替換為指定內容。
y:      字符轉換,轉換前后的字符長度必須相同。
p:      打印,如果同時指定行,表示打印指定行;如果不指定行,則表示打印所有內容;如果有非打印字符,則以 ASCII 碼輸出。其通常與“-n”選項一起使用。
=:      打印行號。
l:      打印數(shù)據(jù)流中的文本和不可打印的ASCII字符(比如結束符$、制表符\t)

實驗操作

打印內容

sed -n -e ‘p'

sed -n -e ‘='

sed -n -e ‘l'

sed -n -e ‘=;p'

sed -n -e ‘=' -e ‘p'

sed -n '
=
p
' test

使用地址

sed編輯器有2種尋址方式

1、以數(shù)字形式表示行區(qū)間

2、用文本模式來過濾出行

sed -n ‘1p'

sed -n ‘$p'

sed -n ‘1,3p'

sed -n ‘3,$p'

sed -n ‘1,+3p' ? 
#打印1之后的連續(xù)3行,即1-4行

sed ‘5q' 
#打印前5行信息后退出,q表示退出

sed -n ‘p;n'
#打印奇數(shù)行;n表示移動到下一行

sed -n ‘n;p'? ? ? ? ? ? ? ? ? ? ? ? ? #打印偶數(shù)行

sed -n ‘2,${n;p}'

sed -n ‘/user/p' /etc/passwd

sed -n ‘/^a/p' /etc/passwd

sed -n ‘/bash$/p' /etc/passwd

sed -n ‘/ftp|root/p' /etc/passwd

sed -n ‘2,/nobody/p' /etc/passwd

sed -n ‘2,/nobody/=' /etc/passwd

sed -nr ‘/ro{1,}t/p' /etc/passwd

加粗樣式

刪除行

sed ‘d' #全刪
sed ‘3d'

sed ‘2,4d'

sed ‘$d'

sed ‘/^$/d'

sed ‘/nologin$/d' /etc/passwd

sed ‘/nologin$/!d' /etc/passwd

sed ‘/2/,/3/d'

sed ‘/1/,/3/d'

替換

行范圍 s/舊字符串/新字符串/替換標記

4種替換標記

數(shù)字:表明新字符串將替換第幾處匹配的地方
g:表明新字符串將會替換所有匹配的地方
p:打印與替換命令匹配的行,與-n一起使用
w 文件:將替換的結果寫到文件中

sed -n 's/root/admin/p' /etc/passwd
sed -n 's/root/admin/2p' /etc/passwd
sed -n 's/root/admin/gp' /etc/passwd
sed 's/root//g' /etc/passwd
sed '1,20 s/^/#/' /etc/passwd
sed '/^root/ s/$/#/' /etc/passwd
sed '/root/ s/^/#/' /etc/passwd
sed -rn 's/.*root.*/#&/p' /etc/passwd
sed -f script.sed testfile2
sed '1,20w out.txt' /etc/passwd
sed '1,20 s/^/#/w out.txt' /etc/passwd
sed -n 's/\/bin\/bash/\/bin\/csh/p' /etc/passwd
sed -n 's!/bin/bash!/bin/csh!p' /etc/passwd		#使用“!”作為字符串分隔符
sed -i 's9\945\9\99\98\939g' test.txt		#將94599替換為9893

插入

sed '/45/c ABC' testfile2
sed 'y/145/ABC/' testfile2   #使所有的1字符轉換成A,所有的2字符轉換成B,所有的3字符轉換成C
sed '1,3a ABC' testfile2
sed '1i ABC' testfile2
sed '5r /etc/resolv.conf' testfile2
sed '/root/{H;d};$G' /etc/passwd	#將包含root的行剪切到末尾,H表示復制到剪切板,G表示粘貼到指定行后
sed '1,2H;3,4G' /etc/passwd			#將1、2行復制到3和4行的下面
echo "111222333" | sed -r 's/(111)(222)/\2\1/'	#將字符 111 和 222 互換位置
echo "111222333" | sed -r 's/^(.)(.*)(.)$/\3\2\1/'		#將第一個字符和最后一個字符互換

到此這篇關于shell sed命令的具體使用的文章就介紹到這了,更多相關shell sed命令內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論