Shell-05 sed
Shell-05
sed命令
Linux文本處理三劍客之sed語句(行編輯—流編輯器 stream editor)
作為行編輯器對文本進行編輯,以行為單位
注意:sed編輯文件,卻不改變原文件;
Sed的工作原理:
???????? 在sed里面會提供一個地址空間,在linux的內(nèi)存中會出現(xiàn)一個模式空間PATTERN SPACE,讀取一行
?
?
制定一個文本文件,依次讀取文本文件中每行的內(nèi)容,讀取到模式空間中(PATTERN SPACE),在模式空間中進行文本匹配(正則表達式),對匹配后的內(nèi)容進行修改(替換、刪除、打印、修改、保存)
Sed的用法:
sed [option] …{script-only-if-no-other-script} [input-file]
sed [參數(shù)] … “sed自己獨立的用法格式的語句” [文本文件]
常見選項:
????????????????????????? -r? 指定使用擴展的正則表達式
?????????????????????????????????? 匹配IP地址
? ? ? ? ? ? ? ? ? ? ? ?1.所有的\都不要
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.| 或者
-n???? 拒絕默認輸出
???????? sed -n ‘1,2p’ 99cfb.sh
-e???? script for while if
???????? for i in {1..9};do echo “$i” sleep 1;done
-f????? 指定腳本文件
-l????? 指定文本換行的長度
-i?? 直接修改文件內(nèi)容(不要使用)
Sed命令的地址定界方式
Sed -n ‘5,7p’ 99cfb.sh
sed -n ‘1~3s/j/@/p’ 99cfb.sh
Sed -n ’10,$p’ 文件
?????????????????????????????????? Sed -n ‘\fd\,$p’ 文件-----匹配從fd到行尾
? ? ? ? ? ? ??
?
匹配addr行到,addr后N行
Sed -n ‘/fd/,+5p’ abc
sed -n ‘1,~3p’ abc
常見命令:
????????????????? p print 打印 默認在屏幕上顯示出來,建議與-n一起使用
????????????????? c 替換行sed “/aaa/c \A” 文件名
????????????????? d 刪除 ?sed “/aaa/d” 文件名 ??刪除匹配到的行
?????????????????????????????????? sed “1,3d” 文件名
????????????????? n N 讀取/添加 模式匹配到的行的下一行內(nèi)容在對其進行操作
????????????????? w 保存文件內(nèi)容到一個新的文件
????????????????? *s* 文本內(nèi)容替換 默認替換模式空間匹配到的第一項內(nèi)容
?????????????????????????????????? g global 全部/全局
??????????????????????????????????
?????????????????????????????????? 語法格式:s/pattern/字符串/---中間的斜杠何以替換為任意一個特殊字符
????????????????? ????????????????? \1 \2 \3…? 和正則表達式的分組是相同的,實現(xiàn)反向應用
???????????????????????????????????????????????????? 指定某一個匹配項進行修改替換
???????????????????????????-第四行的第三個for替換成if
? ? ? ? ? ? ? ? ? ? ? ??第四行的第三個for替換成if并保存到99xfb.sed.sh
????????????????? i 在匹配行的上一行添加內(nèi)容
????????????????????????? sed “/for/i abc ” filename
????????????????? a 在匹配行的下一行添加內(nèi)容
????????????????????????? sed “/for/a abc ” filename
??
?
?? Grep “testbash” /etc/passwd | Sed “s#^test.*#&er#g”
?
?
例如s###、s@@@、s%%%
sed “s/k/K/gw? /root/aabbcc” abc
sed的高級應用?????????????
D ?hold space—占有空間
?????????????????
隨機數(shù)
????????????????? RANDOM? 范圍0-32767
????????????????? A=$[$RANDOM%100+1]
???????? 練習:
?
?
?
取出文件路徑的路徑部分----dirname
取出文件路徑的文件部分----basename
?
死循環(huán)
while true;do
????????????? 循環(huán)體
done
break—打斷跳出循環(huán)
continue----跳出本次循環(huán)
sleep----延長多長時間后,繼續(xù)執(zhí)行循環(huán)
until
?????? 與while用法相同
?????? 區(qū)別:只有判斷條件為false的時候,才會進入循環(huán)語句
練習2:
?
?
#!/bin/bashcat << EOF菜 單============================"CPU)顯示cpu信息""Mem)顯示內(nèi)存信息""Disk)顯示磁盤信息""Quit)退出"============================EOFwhile true;doread -p "請輸入需要查看的信息:" infoecho ""if [ -z $info ];thenecho "請輸入一個正確的參數(shù)!!"echo "例如:CPU Mem Disk Quit"# exit 1fiif [ $info = "cpu" ];thencat /proc/cpuinfoelif [ $info = "mem" ];thenfree -melif [ $info = "disk" ];thenfdisk -lelif [ $info = "quit" ];thenecho "已退出"exit 0elseecho "輸入信息有誤"echo "請輸入一個正確的參數(shù)!!"echo "例如:CPU Mem Disk Quit"exit 2fidone?
?
進度條
?
?
Vim .vimrc
編輯vim的一些默認參數(shù)
?
?
云桌面
作用:給客戶從云端分配PC機,讓客戶在云端辦公;
【在vim中,“.”代表光標所在當前行:“.,$s/^/#/-----從光標所在當前行到行尾的開頭替換成#”】
1~3 1,4,7,11----步長
/pattern1/,/pattern2----從模式1匹配到的行,到模式2匹配到的行1
數(shù)字,+N
/pattern1/,+N------".,+3s/^#//” 從光標所在當前行到后三行的開頭替換成空
?
轉(zhuǎn)載于:https://www.cnblogs.com/KAJIA1/p/11392365.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Shell-05 sed的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 真空到了负数,规管布亮是什么情况
- 下一篇: Shell-06 函数