• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Matrix
            Klarke's C/C++ Home
            posts - 61,comments - 0,trackbacks - 0

            格式: sed -i "s/查找字段/替換字段/g" `grep 查找字段 -rl 路徑`

            linux sed 批量替換多個文件中的字符串

            sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`

            例如:替換/home下所有文件中的www.admin99.net為admin99.net

            sed -i "s/www.admin99.net/admin99.net/g" `grep www.admin99.net -rl /home`

            1. vi 方法
            參見vim用戶手冊26.

            *26.3*  改動多個文件

            假定你有個變量名為 "x_cnt" 而你要把他改為 "x_counter"。
            這個變量在多個 C 文件都被用到了。你需要在所有文件中作此改動。你得這么做。
            把所有相關文件放進參數列表:

            :args *.c

            這個命令會找到所有的 C 文件并編輯其中的第一個。
            現在你可以對所有這些文件執行置換命令:

            :argdo %s/\<x_cnt\>/x_counter/ge | update

            命令 ":argdo" 把另一個命令當作其參數。而后者將對參數列表內所有的文件執行。
            作為參數的替換命令 "%s" 作用于所有文本行。它用 "\<x_cnt\>" 來查找"x_cnt"。
            "\<" 和 "\>" 用來指定僅匹配那些完整的詞,而不是 "px_cnt" 或"x_cnt2"。

            替換命令的標記中包含 "g",用以置換同一行文本內出現的所有的匹配詞 "x_cnt"。
            標記 "e" 用于避免因文件中找不到 "x_cnt" 而出現錯誤信息。
            否則 ":argdo" 命令就會在遇到第一個找不到 "x_cnt" 的文件時中斷。
            字符 "|" 分隔兩條命令。后面的 "update" 命令將那些有改動的文件存盤。
            如果沒有 "x_cnt" 被改成 "x_counter",這個命令什么也不做。

            還有一個 ":windo" 命令,用于在所有視窗內執行其參數所規定的命令。
            以及 ":bufdo"命令,對所有緩沖執行其參數所規定的命令。
            使用中要小心,因為你在緩沖列表中的文件數量可能超過你能想像的。
            請用 ":buffers" 命令 (或 ":ls") 來檢查緩沖列表。


            2. perl方法
            可以在命令行下進行替換,
            仍然以vi方法中的例子進行講解,把c文件中的"x_cnt" 改為 "x_counter"。
            可以執行以下命令:
            find . -name '*.c' -print0 | xargs -0 perl -pi -e 's/x_cnt/x_counter/g'

            xargs 把find命令的結果作為perl的參數。
            find的參數-print0和xargs的參數-0是防止文件名中有空格或新行造成錯誤,可以man xargs獲得幫助。

            注意: 如果替換的字符包括 ()[]/"'!? 等等這樣的特殊字符,你必須在字符前加上反斜杠\ 。

            這種方法的好處是不用啟動編輯器,比較迅速。缺點是容易出現不想要的替換,例如:把px_cnt替換成了px_counter。

            3. sed
            仍以上面的例子講解:
            find . -name "*.c" -print0 | xargs -0 sed -i 's/x_cnt/x_counter/g'
            優缺點和perl方法相同。

            posted on 2012-03-28 13:37 Klarke 閱讀(936) 評論(0)  編輯 收藏 引用
            久久精品无码一区二区三区日韩 | 欧美精品丝袜久久久中文字幕 | 亚洲v国产v天堂a无码久久| 午夜精品久久久久久影视777| 久久综合久久美利坚合众国| 精品乱码久久久久久久| 久久久国产一区二区三区| 久久婷婷五月综合国产尤物app| 99久久国产亚洲高清观看2024| 国产精品久久久久久久久久影院| 国产成人无码久久久精品一| 色综合久久中文字幕综合网| 欧美亚洲国产精品久久蜜芽| 亚洲国产另类久久久精品 | 久久综合亚洲色HEZYO社区 | 亚洲午夜久久久影院| 欧美久久综合九色综合| 91久久香蕉国产熟女线看| 久久亚洲精品成人AV| 久久久黄色大片| 久久乐国产精品亚洲综合| 狠狠色婷婷综合天天久久丁香 | 久久福利青草精品资源站免费| 亚洲国产美女精品久久久久∴| 青青草国产97免久久费观看| 久久久久国产精品| 国产精品久久自在自线观看| 精品久久久噜噜噜久久久| 久久强奷乱码老熟女网站| 亚洲v国产v天堂a无码久久| 久久免费99精品国产自在现线| 国产69精品久久久久99| 亚洲精品国产成人99久久| 国产婷婷成人久久Av免费高清 | 色综合久久久久综合99| 欧美日韩成人精品久久久免费看| 久久99精品久久久久久水蜜桃| 嫩草影院久久99| 久久久WWW成人免费精品| 亚洲欧美另类日本久久国产真实乱对白 | 亚洲午夜无码久久久久|