鍍金池/ 教程/ Linux/ shell 學習第十一天----sed 正則的精確控制
shell 學習四十一天----列出文件 ls 和 od 命令
shell 學習小結
shell 學習第二十八天----case 語句
shell 學習四十四天----尋找文件
shell 學習三十五天----波浪號展開與通配符
shell 學習三十八天----執(zhí)行順序和 eval
shell 學習四十八天----文件校驗和匹配
shell 學習四十天----awk 的驚人表現(xiàn)
shell 學習第十一天----sed 正則的精確控制
shell 學習第十七天----awk 命令
shell 學習三十九天----內(nèi)建命令
shell 學習四十五天----xargs
shell 學習三十七天----引用
shell 學習第十六天----join 練習
shell 學習第二十四天----提取開頭或結尾數(shù)行
shell 學習第九天----分組
shell 學習第五天----基本的 I/O 重定向
shell 學習第十五天----使用 cut 選定字段
shell 學習四十六天----文件系統(tǒng)的空間信息 df 和 du 命令
shell 學習第八天----擴展正則表達式 (ERE)
shell 學習第十九天----文本塊排序
shell 學習第二十一天----重新格式化段落
shell 學習三十六天----命令替換
shell 學習第二十天----sort 的其他內(nèi)容以及 uniq 命令
shell 學習四十二天----使用 touch 更新文件時間
shell 學習五十一天----top 命令查看進程列表
shell 學習第一天
shell 學習五十四天----進程系統(tǒng)調(diào)用的追蹤 strace
shell 學習五十天----查看進程 ps 命令
shell 學習第二十七天----退出狀態(tài)和 if 語句
shell 學習第二十三天----打印
shell 學習三十三天----關于重定向
shell 學習四十九天----進程建立
shell 學習第三十天----break,continue,shift,getopts
shell 學習五十五天----進程記賬
shell 學習總結一
shell 學習第二十六天----變量與算數(shù)
shell 學習第二十二天----計算行數(shù), 字數(shù)以及字符數(shù)
shell 學習五十八天----/proc 文件系統(tǒng)
shell 學習第二十五天----神器的管道符
shell 學習第三十二天----read 讀取一行
sheel 學習第三天
shell 學習----小結
shell 學習第十八天----文本排序
shell 學習第三十一天----函數(shù)問題
shell 學習第十天----sed 查找與替換
shell 學習四十三天----臨時性文件的建立與使用
shell 學習四十七天----文件比較 cmp,diff,patch
shell 學習三十四天----printf 詳解
shell 學習五十七天 ----linux 任務管理,針對上一講的總結和擴展
shell 學習第六天----小結
shell 學習第十三天----sed 案例分析
shell 學習第七天----基礎正則表達式 (BRE)
shell 學習第十二天----行與字符串
shell 學習小結四
shell 學習第二十九天----循環(huán)
shell 學習五十二天----刪除進程 kill 命令
shell 學習五十六天----延遲進程調(diào)度
shell 學習第四天----華麗的 printf 輸出
shell 學習第十五天----join 連接字段
shell 學習完結篇----希望你能看到
shell 學習第二天
shell 學習五十三天----捕獲信號 trap

shell 學習第十一天----sed 正則的精確控制

有多少文本會改動,在使用 sed 的時候我們來看這么兩個問題: 第一個問題是有多少人文本會匹配,第二個問題是從哪里開始匹配。

回答是: 正則表達式可以匹配整個表達式的輸入文本中最長的,最左邊的子字符串。除此之外,匹配的空 (null) 字符串,則被認為是比完全不匹配的還長。

  • echo syx is a good body | sed 's/syx/zsf/' 使用固定字符串
  • sed 可以使用完整的正則表達式。但是應該知道” 從最長的最左邊” 規(guī)則的重要性。
  • echo Tolstoy is worldly | sed 's/T.*y/Camus/'
  • Camus

很明顯,我們只想要匹配 Tolstoy,但是由于匹配會擴展到可能的最長長度的文本量,所以出現(xiàn)了這樣的結果。

這就需要我們精確定義:

echo Tolstoy is worldly | sed 's/T[[:alpha:]]*y/Camus/'
Camus is worldly

在文本查找中,有事喊可能會匹配到 null 字符串,而在執(zhí)行文本替代時,也允許插入文本。

ehco abc | sed 's/b*/l/'
labc
ehco abc | sed 's/b*/l/g'
lalcl

請留意,b*shi 如何匹配 abc 的前面與結尾的 null 字符串。