1.Sed 工作流程 首先sed把當前正在處理的行保存在一個臨時緩存區中(也稱為模式空間),然後處理臨時緩衝區中的 行,完成後把該行發送到屏幕上。 sed把每一行都存在臨時緩衝區中,對這個副本進行編輯,所以不會修改原文件。 Sed主要用來自動編輯一個或多個文件;簡化對文件的反覆操作;編寫轉換程式等。 ...
1.Sed
工作流程
- 首先
sed
把當前正在處理的行保存在一個臨時緩存區中(也稱為模式空間),然後處理臨時緩衝區中的
行,完成後把該行發送到屏幕上。 sed
把每一行都存在臨時緩衝區中,對這個副本進行編輯,所以不會修改原文件。Sed
主要用來自動編輯一個或多個文件;簡化對文件的反覆操作;編寫轉換程式等。
2. Sed
使用方法
sed
常見的語法格式有兩種,一種叫命令行模式, 另一種叫腳本模式。
2.1 命令行格式
格式
sed [option] 'sed的命令|地址定位' filename
說明: 引用shell script 中的變數應使用雙引號,而非通常使用的單引號
option:
-e 進行多項編輯,即對輸入行應用多條sed命令時使用
-n 取消預設的輸出
-f 指定sed腳本的文件名
-r 使用擴展正則表達式
-i inplace,原地編輯(修改源文件)
常用命令和選項
p 列印行
d 刪除行
i\ 在當前行之前插入文本。多行時除最後一行外,每行末尾需用”\“續行
a\ 在當前行後添加一行或多行。多行時除最後一行外,每行末尾需用“\”續行
c\ 用此符號後的新文本替換當前行中的文本。多行時除最後一行外,每行末尾需用”\“續行整行替換
r 從文件中讀取輸入行
w 將所選行寫入文件
s 用一個字元串替換另一個
g 在行內進行全局替換
& 保持查找串以便在替換中引用
= 列印行號
2.2 腳本格式
用法
#sed -f scirpts.sed file 使用腳本處理文件
#建議使用 ./sed.sh file
#!/bin/sed -f
註意事項
腳本文件是一個sed的命令行清單。commands
在每行的末尾不能有任何空格、製表符(tab)或其它文本。
如果在一行中有多個命令,應該用分號分隔。
不需要且不可用引號保護命令
#號開頭的行為註釋
Sed 實驗
實驗內容
根據IP自動更改主機名並自動安裝vsftpd服務並完成相應配置
1.不支持本地用戶登錄
2.匿名用戶可以上傳新建刪除
3.匿名用戶限速500KBps
#!/bin/bash
#獲取IP地址
ip=`ip a | grep -Eo 'inet .* brd' | grep -Eo '[0-9]{1,3}.*\.[0-9]{1,3}'`
ip_end=`echo $ip | sed -E 's/^.*\.//g'`
name="server${ip_end}.itcast.cc"
hostnamectl set-hostname $name
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/=enforcing/=permissive/g' /etc/selinux/config
yum install vsftpd -y
systemctl start vsftpd
systemctl enable vsftpd
sed -i 's/local_enable=YES/local_enable=NO/g' /etc/vsftpd/vsftpd.conf
sed -i 's/#anon_upload_enable=YES/anon_upload_enable=YES/g' /etc/vsftpd/vsftpd.conf
sed -i 's/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g' /etc/vsftpd/vsftpd.conf
sed -i '$a anon_max_rate=500000' /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd