sed基本用法:
sed:stream editor
行編輯器(全屏編輯器)
sed:模式空間
默認不編輯原文件,僅對模式空間中的數據做處理,處理結束後將模式空間打印到屏幕
sed [options] 'AddressCommand' file ...
-n:靜默模式,不再顯示模式空間的內容
-i:直接編輯原文件
-e:同時執行多個腳本
-f filename:腳本從文件中讀取
-r:支持擴展正則表達式
Address:
1.startline,endline : 1,200
$倒數第一行
2./REGEXP/
3./PATTERN1/,/PATTERN2/:從第一個模式匹配到的行開始,至第二個模式匹配的行結束
4.LineNumber:指定行
5.startline,+N :總計n+1行
Command:
d:刪除匹配的行
p:顯示符合條件的行
a \"string":在後面添加 ,可以用\n換行
i \"string":在前面添加
r file:將指定的文件內容添加到後面
w file:將符合條件的行保存到指定文件
s/pattern/string/:替換,默認只替換每行中第一次匹配
g:全局替換
i:忽略大小寫
s///:可以使用其他如 s### s@@@
&:引用匹配到的內容s#l..e#&r#ge s#\(l..e\)#\1r#g
sed練習:
1.刪除/etc/grub.conf文件中行首的空白符;
sed -r 's@^[[:spapce:]]+@@g' /etc/grub.conf
2.替換/etc/inittab文件中"id:3:initdefault:"一行中的數字爲5;
sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab
3.刪除/etc/inittab文件中的空白行;
sed '/^$/d' /etc/inittab
4.刪除/etc/inittab文件中開頭的#號;
sed 's@^#@@g' /etc/inittab
5.刪除某文件中開頭的#號及後面的空白字符,但要求#號後面必須有空白字符;
sed -r 's@^#[[:space:]]+@@g' /etc/inittab
6.刪除某文件中以空白字符後面跟#類的行中的開頭的空白字符及#
sed -r 's@^[[:space:]]+#@@g' /etc/inittab
7.取出一個文件路徑的目錄名稱;
echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g'
基名:
echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'
#abc
# hello world
# hi world
練習:
傳遞三個參數給腳本,第一個爲整數,第二個爲算術運算符,第三個爲整數,將計算結果顯示出來,要求保留兩位精度。形如:
./calc.sh 5 / 2
練習:
傳遞3個參數給腳本,參數均爲用戶名。將此些用戶的帳號信息提取出來後放置於/tmp/testusers.txt文件中,並要求每一行行首有行號。
寫一個腳本:
判斷當前主機的CPU生產商,其信息在/proc/cpuinfo文件中vendor id一行中。
如果其生產商爲AuthenticAMD,就顯示其爲AMD公司;
如果其生產商爲GenuineIntel,就顯示其爲Intel公司;
否則,就說其爲非主流公司;
寫一個腳本:
給腳本傳遞三個整數,判斷其中的最大數和最小數,並顯示出來。
MAX=0
MAX -eq $1
MAX=$1
MAX -lt $2
MAX=$2
字符串測試:
==:
!=:
>
<
-n string:是否爲不空
-z string:是否爲空
echo "scale=2;111/22;" | bc
bc <<<"scale=2;111/22;"
循環:
for
while
until
for var in list
do
...
done
生成列表
{1..100}
`seq [start] [step] end`
declare -i sum=0:整型
declare -x sum:全局變量
i++
i--
++i
--i
-=
+=
*=
/=
%=
組合測試條件
-a: and
-o: or
!: not
___ _ _
A∩B = A∪B
____ _ _
A∪B = A∩B
寫一個腳本:
1、設定變量FILE的值爲/etc/passwd
2、依次向/etc/passwd中的每個用戶問好,並顯示對方的shell,形如:
Hello, root, your shell: /bin/bash
3、統計一共有多少個用戶
寫一個腳本:
1、添加10個用戶user1到user10,密碼同用戶名;但要求只有用戶不存在的情況下才能添加;
擴展:
接受一個參數:
add: 添加用戶user1..user10
del: 刪除用戶user1..user10
其它:退出
adminusers user1,user2,user3,hello,hi
寫一個腳本:
計算100以內所有能被3整除的正整數的和;
取模,取餘:%
3%2=1
100%55=45
寫一個腳本:
計算100以內所有奇數的和以及所有偶數的和;分別顯示之;
寫一個腳本,分別顯示當前系統上所有默認shell爲bash的用戶和默認shell爲/sbin/nologin的用戶,並統計各類shell下的用戶總數。顯示結果形如:
Linux運維第7天:Linux下sed工具及shell編程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
linux下安裝並使用Gnuplot
isyslab
2018-08-27 07:01:56
mysql備份策略(全量備份+增量備份)
isyslab
2018-08-27 07:01:52
Linux常用網絡配置命令
IT人生-Panda
2018-08-27 03:08:30
Linux運維第5天:Linux下bash配置及I/O重定向和grep文本查找
will835559313
2018-08-26 21:45:32
Linux運維第9天:Linux下磁盤管理及使用掛載
will835559313
2018-08-26 21:45:29
Linux運維第4天:Linux權限及用戶管理
will835559313
2018-08-26 21:45:29
Linux運維第6天:Linux下shell編程
will835559313
2018-08-26 21:45:29
Linux運維第9天:Linux下suid,sgid,acl,shell編程
will835559313
2018-08-26 21:45:29
Linux運維第2天:Linux文件系統詳解
will835559313
2018-08-26 21:45:16
Linux運維第8天:Linux下vim使用及find工具
will835559313
2018-08-26 21:45:16
Linux運維第3天:Linux文本處理及bash
will835559313
2018-08-26 21:45:16
Linux運維第1天:Linux操作系統基礎
will835559313
2018-08-26 21:45:13
tomcat編譯安裝
不会飞的大象
2018-08-26 19:18:08
MySQL5.7安裝+基於GTID主從複製+並行複製+增強半同步複製+讀寫分離+M-S-S架構(聯級複製)
不会飞的大象
2018-08-26 19:18:08
24小時熱門文章