查詢並替換字串的指令碼

2021-06-09 04:21:12 字數 1844 閱讀 3414

首先判斷輸入的引數是否是兩個

查詢 所有的xml配置檔案 把檔案中從頭到尾含有引數1($1)全部替換為引數2($2)

使用perl不生成轉換過程中的中間檔案,執行起來很快 -i引數直接原地編輯檔案。

然後把引數1 替換為引數2

#!/bin/bash

if [ $# -lt 2 ]; then

echo pls input 2 parameter

else

echo replace \"$1\" with \"$2\"

find . -name "*.xml" -print | xargs perl -pi -e "s/$1/$2/g"

fiexit 0

使用find和sed

#首先查詢個數(sed -n)

find . -name '*.htm' | xargs sed -n '/old/p'

#然後替換(sed -i)

find . -name '*.htm' | xargs sed -i 's/old/new/g'

使用grep和sed

grep -l old *.htm | xargs sed -n "/old/p"

sed -n '/old/p' `grep -l old *.htm`

使用find和perl

find . -name '*.htm' | xargs  perl -pi -e 's|old|new|g'

參考:// 使用 shell 在多個檔案中查詢

find . -type f | xargs grep flash  

說明:  

找出前目錄及其子目錄下的檔案中含有 flash 的檔案  

//  

重點記錄下 xargs 命令:  

xargs 在標準輸入上取得引數列表、一行乙個,再將他們以適當的大小組起來(由主機的 arg_max 值決定)傳給另乙個命令,此命令在作為 xargs 的引數.  

arg_max 值檢視方法:  

getconf arg_max  

//  

//  

在多個檔案中查詢使用命令替換也可以完成  

grep flash $( find . -type f)  

說明:  

$() 是命令替換,括號內是 shell 命令;shell 執行括號內的命令並將整個 $(...) 替換為 命令的輸出  

命令替換的形式有兩種,一種是 $(),另一種是使用兩個反引號 `find . -type f`

//多個檔案中替換 - sed

為了保證不該替換的不被替換,先在檔案中查詢一下哪些會被替換  

find -type f ! -path '*.svn*' | xargs sed -n '/ookong inc/p'  

說明:  

1, find 首先過濾掉 .svn 目錄及其子目錄  

2, xargs 傳遞引數給 sed 命令  

3, sed 執行查詢, 只列印符合要求的行  

//  

// 替換  

find -type f ! -path '*.svn*' | xargs sed -i 's/ookong inc/ookong ltd. co./g'  

說明:  

1, sed 的 i 選項直接在檔案中替換,而不是把替換結果列印出來  

2, g 對每行中所有匹配執行替換  

//  

//  

另外:乙個 perl 多檔案查詢的程式: ack  

-- 顯示所在的行號及所在的檔案 

C語言 字串 查詢並替換

編譯環境 vs2010。語言 c。include include include void str replace char str src,int n,char str copy void main void printf s str source void str replace char st...

字串 字串的查詢和替換

hello str hello world 1.判斷是否以指定字串開始 print hello str.startswith hello 2.判斷是否以指定字串結束 print hello str.endswith world 3.查詢指定字串 index同樣可以查詢指定的字串在大字串中的索引 pr...

批處理指令碼, 讀取檔案並字串替換

2016年10月29日 18 40 44 星期六 場景 從foxmail裡匯出的檔案裡取出需要的內容,放入到另乙個檔案中,並替換相應的字元為分號,方便excel直接開啟 注意 1.rem 為注釋當前行 2.為轉義符號 3.a for迴圈中變數賦值的寫法 4.a 程式執行過程中變數的賦值會延遲,用感嘆...