1 sed 替換
1格式:
's/原字符串/新字符串/' 輸入源
2正確參考:
sed ’s/as/AS/' do.txt
改變字符串as為AS,不會改輸入源的文件。
匹配每行第一次匹配的位置。
sed ’s/as/AS/' do.txt
指定匹配每行第二個被匹配的數據, 用/n來指定匹配第幾個
sed ’s/as/AS/2' do.txt
每行的第二個as變成了AS
配合g命令,全部匹配, 設置文件中所有匹配的位置,修改完全部的as都被替換成AS了
3 錯誤參考:
注意尾部有/ , 試了一個上午一直沒成功, 原來是少了/
yuyuyu@ubuntu:~$sed ’s/as/AS' do.txt
sed: -e expression #1, char 10: unterminated `s' command
5 界定符, 一般是用/ ,但也可以用 ; : , 分號,冒號, 逗號等
比如像把留着當目錄, 符號用, 可以在‘s;;;’ s/改成s;
sed 's;0x50;0x60;' do.txt
6 配合區域保存, \(\)
輸入一個目錄, 然后用區域存儲,以及引用 \1 修改這個目錄的子目錄
yuyuyu@ubuntu:~$
echo /home/yuyuyu/ | sed 's;\(/home\)/yuyuyu/;\1/zhangzhang/;'
7 sed -e命令, 執行多次匹配。
yuyuyu@ubuntu:~$ sed 's/as/AS/2' do.txt
8 sed -f命令, 把編輯命令放到文本里讀出來執行,批量處理sed的編輯命令
創建一個test_sed文本
yuyuyu@ubuntu:~$ cat test_sed s/as/AS/2 s/df/DF/
使用讀取sed腳本命令:
yuyuyu@ubuntu:~$ sed -f test_sed do.txt
腳本想要替換as 和df , 結果顯示都替換成功了。
9 sed -n命令,關閉修改結果, 只打印 帶p的行
測試了下, -n命令, 結果什么都沒輸出到result.txt
sed -n 's/as/AS/2' <do.txt > result.txt
如果在 尾部加入p就能夠打印被修改的行了
yuyuyu@ubuntu:~$ sed -n 's/as/AS/2p' <do.txt > result.txt
10 sed 的指定行的用法
sed 只對含有特定行的位置操作
sed '/fd/ s/as/AS/' <do.txt
sed 只對不含有特定行的位置操作
sed '/fd/ !s/as/AS/' <do.txt