• <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 批量替換多個(gè)文件中的字符串

            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用戶手冊(cè)26.

            *26.3*  改動(dòng)多個(gè)文件

            假定你有個(gè)變量名為 "x_cnt" 而你要把他改為 "x_counter"。
            這個(gè)變量在多個(gè) C 文件都被用到了。你需要在所有文件中作此改動(dòng)。你得這么做。
            把所有相關(guān)文件放進(jìn)參數(shù)列表:

            :args *.c

            這個(gè)命令會(huì)找到所有的 C 文件并編輯其中的第一個(gè)。
            現(xiàn)在你可以對(duì)所有這些文件執(zhí)行置換命令:

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

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

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

            還有一個(gè) ":windo" 命令,用于在所有視窗內(nèi)執(zhí)行其參數(shù)所規(guī)定的命令。
            以及 ":bufdo"命令,對(duì)所有緩沖執(zhí)行其參數(shù)所規(guī)定的命令。
            使用中要小心,因?yàn)槟阍诰彌_列表中的文件數(shù)量可能超過你能想像的。
            請(qǐng)用 ":buffers" 命令 (或 ":ls") 來檢查緩沖列表。


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

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

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

            這種方法的好處是不用啟動(dòng)編輯器,比較迅速。缺點(diǎn)是容易出現(xiàn)不想要的替換,例如:把px_cnt替換成了px_counter。

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

            posted on 2012-03-28 13:37 Klarke 閱讀(935) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            亚洲国产天堂久久综合网站| 久久精品草草草| 久久久综合香蕉尹人综合网| 香蕉aa三级久久毛片| 亚洲欧美伊人久久综合一区二区| 久久免费视频网站| 久久狠狠爱亚洲综合影院| 久久久婷婷五月亚洲97号色| 久久亚洲电影| 午夜天堂av天堂久久久| 99久久精品九九亚洲精品| 日韩欧美亚洲综合久久| 成人精品一区二区久久| 久久青青草原亚洲av无码app| 伊人久久大香线蕉av不变影院| 国产精品永久久久久久久久久| 国内精品久久久久久久亚洲| 久久国产精品成人免费 | 久久国产乱子伦精品免费强| 久久精品免费网站网| 久久国产精品二国产精品| 婷婷五月深深久久精品| 亚洲午夜无码AV毛片久久| 亚洲第一永久AV网站久久精品男人的天堂AV| 国产成人综合久久久久久| 麻豆AV一区二区三区久久 | 久久无码AV中文出轨人妻| 99久久99这里只有免费的精品| 香蕉aa三级久久毛片| 久久国产精品无码网站| 99久久夜色精品国产网站| 97久久超碰成人精品网站| 亚洲精品午夜国产VA久久成人| 久久e热在这里只有国产中文精品99| 久久久久久久波多野结衣高潮| 99久久www免费人成精品| 久久国产精品久久久| 久久久久久狠狠丁香| 久久综合九色综合精品| 国产成人久久精品二区三区| 久久综合九色综合精品|