【问题标题】:Shell Scipt to Find and Replace a string pattern用于查找和替换字符串模式的 Shell 脚本
【发布时间】:2012-11-02 16:49:09
【问题描述】:

我需要一个 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 字符串模式???

【问题讨论】:

    标签: shell scripting


    【解决方案1】:
    oldtext="CSRF=([a-zA-Z0-9]{4}-){7}[a-zA-Z0-9]{4}"
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-06
        • 2011-03-14
        • 1970-01-01
        • 1970-01-01
        • 2014-02-17
        • 2018-02-01
        • 2016-03-18
        • 2014-11-24
        相关资源
        最近更新 更多