sed鞏固擴充套件

2021-08-29 01:47:40 字數 992 閱讀 1061

例如:有個檔案test的內容如下:

ertfff

**[abcfd]

123324

444[rty]

**fgfgf

怎麼能擷取[abcfd]到[rty]之間的內容呢?

參考:sed -nr '/[abcfd]/,/[rty]/p' tets。sed單引號中命令可以有範圍匹配和指定動作,範圍可以是像1,5指定行,也可以把數字換成匹配行內容的正規表示式。

sed中,使用\u表示大寫,\l表示小寫。

例1. 把每個單詞的第乙個小寫字母變大寫:

sed 's/\b[a-z]/\u&/g' filename

\b代表單詞開始或結尾,&代表當下匹配的整體。

例2. 把所有小寫變大寫:

sed 's/[a-z]/\u&/g' filename

例3. 大寫變小寫:

sed 's/[a-z]/\l&/g' filename

例如在test檔案中a開頭的行末新增12:sed 's/\(^a.*\)/\1 12/' test\1代表前面圓括號的整體,也可以用&代替。

另外補充幾個命令:

sed '/c/' test

定義乙個標籤a,匹配c,然後n把下一行加到模式空間裡,匹配最後一行時,才退出標籤迴圈,然後命令d,把這個模式空間裡的內容全部清除。

if 匹配"c"

:a追加下一行

if 不匹配"$"

goto a

最後退出迴圈,d命令刪除。

參考:sed -n '1,100' 1.txt

也可以用多個命令配合管道符完成。上面這個命令提現了sed和awk命令形式的相通性,大括號用來擴起命令組。

awk鞏固擴充套件

選項 v可以實現使用外部變數。如 a 44echo abcd awk v get a a 說明 v選項用於定義引數,這裡表示將變數a的值賦予get a。如果有多個變數需要賦值,就需要多個 v選項。需求 把兩個檔案中,第一列相同的行合併到同一行中。舉個例子,有兩個檔案,內容如下 cat 1.txt 1...

sed 擴充套件

練習題 第一次做題10 13都不會做 1 把 etc passwd 複製到 root test.txt,用sed列印所有行 root centos7 2 tmp cat etc passwd root test.txt sed n 1,p root test.txt 2 列印test.txt的3到1...

鞏固練習3

1.新建使用者組,shengchan,caiwu,jishu 2.新建使用者要求如下 1 adminsc 的初始組為shengchan 2 admincw的初始組為caiwu 3 adminjs的初始組為jishu 4 tem 是shengchan組的附加使用者 5 harry是caiwu組的附加使...