sed 擴充套件

2021-09-21 05:19:35 字數 1358 閱讀 9866

練習題:(第一次做題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到10行

sed -n '3,10p' test.txt

3、列印test.txt 中包含 『root』 的行

sed -n '/root/p' test.txt

4、刪除test.txt 的15行以及以後所有行

sed '15,$'d test.txt

5、刪除test.txt中包含 『bash』 的行

sed '/bash/'d test.txt

6、替換test.txt 中 『root』 為 『toor』

sed 's#root#toor#g' test.txt

7、替換test.txt中 『/sbin/nologin』 為 『/bin/login』

sed 's#\/sbin\/nologin#\/bin\/login#g' test.txt

8、刪除test.txt中5到10行中所有的數字

sed -n '5,10p' test.txt |sed 's#[0-9]##g'

9、刪除test.txt 中所有特殊字元(除了數字以及大小寫字母)

sed 's#[^a-za-z0-9]##g' test.txt

10、把test.txt中第乙個單詞和最後乙個單詞調換位置

sed 's/(^[a-za-z])([^a-za-z].)([^a-za-z])([a-za-z]*$)/\4\2\3\1/g' test.txt

分為4段:

第一行:root:x:0:0:root:/root:/bin/bash

root :x:0:0:root:/root:/bin / bash

11、把test.txt**現的第乙個數字和最後乙個單詞替換位置

sed 's#([^0-9][^0-9])([0-9][0-9])([^0-9].)([^a-za-z])([a-za-z][a-za-z]$)#\1\5\3\4\2#' test.txt

12、把test.txt 中第乙個數字移動到行末尾

sed 's#([^0-9][^0-9])([0-9][0-9])([^0-9].*$)#\1\3\2#' test.txt

13、在test.txt 20行到末行最前面加 『aaa:』

sed '20,$s/^.*$/aaa:&/' test.txt

14、列印1,100行,含有abc的行列印

sed -n '1,100' 1.txt

sed鞏固擴充套件

例如 有個檔案test的內容如下 ertfff abcfd 123324 444 rty fgfgf 怎麼能擷取 abcfd 到 rty 之間的內容呢?參考 sed nr abcfd rty p tets。sed單引號中命令可以有範圍匹配和指定動作,範圍可以是像1,5指定行,也可以把數字換成匹配行內...

如何在grep和sed命令中使用擴充套件的正規表示式

對於grep,可以使用egrep命令來替代,那麼就支援擴充套件的正規表示式了。對於sed,只要加上引數 r就可以支援擴充套件的正規表示式了。由於平時寫python用的正規表示式大部分都是擴充套件的正規表示式,所以,出於習慣,我喜歡更自由的擴充套件的正規表示式,使用起來不用去考慮是否支援的問題。以下是...

sed原理及sed命令格式

4.1 sed工作原理 sed是乙個非互動式的流編輯器。所謂非互動式,是指使用sed只能在命令列下輸入編輯命令來編輯文字,然後在螢幕上檢視輸出 而所謂流編輯器,是指sed每次只從檔案 或輸入 讀入一行,然後對該行進行指定的處理,並將結果輸出到螢幕 除非取消了螢幕輸出又沒有顯式地使用列印命令 接著讀入...