我需要一个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字符串模式???
答案 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)使用扩展正则表达式。