用于查找和替换字符串模式的Shell脚本

时间:2012-11-14 07:28:24

标签: shell scripting

我需要一个shell脚本来替换多个文本文件中的字符串模式。

按照模式,我的意思是在多个文件中出现这种情况:

CSRF=PG0U-8R3L-KLXT-7UWT-TSRS-IFLY-OI9Y-M75C
CSRF=X67S-3QHA-LNT8-D83N-5BS3-2WA4-7BDP-J1NQ
CSRF=TATJ-3QHA-LNT8-D83N-AGHJ-AGJD-7BDP-JGAJ
CSRF=DHJG-8R3L-AFJH-ASGJ-TSRS-ADGJ-OI9Y-AGHJ

所以一般来说它像CSRF = $$$$ - $$$$ - $$$$ - $$$$ - $$$$ - $$$$ - $$$$$ - $$$$ 其中$ =任何字母数字

我已经使用sed命令查找旧文本并用新文本替换旧文本。但在这里我正在寻找搜索和替换的字符串模式。

我的命令是:

    oldtext="CSRF=$$$$-$$$$-$$$$-$$$$-$$$$-$$$$-$$$$$-$$$$"
    newtext="CSRF Replaced"    
    find -iname '*.txt' | xargs sed -i "s/$oldtext/$newtext/g"  

所以我的问题是......如何搜索这个CSRF字符串模式???

2 个答案:

答案 0 :(得分:0)

我真的不明白你在说什么。也许你正在寻找这个。

find -iname '*.txt' | xargs sed -i "s/^\(CSRF=\)$oldtext/\1 $newtext/g"

答案 1 :(得分:0)

oldtext="CSRF=([a-zA-Z0-9]{4}-){7}[a-zA-Z0-9]{4}"

然后确保调用sed -r(在Linux上)或sed -E(在BSD上,如Mac OS X)使用扩展正则表达式。