• Linux shell multifile content replace with sed


    #!/bin/bash
    
    
    #                  Linux shell multifile content replace with sed
    # 声明:
    #     本源代码主要是利用两份(中、英文)具有相同键值对的json数据,对html内的中文进行
    # 自动化文本替换的代码。
    #
    #                                        2015-11-20 晴 深圳 南山平山村 曾剑锋
    
    
    # 得到中文部分
    sed -n "/"/p" SimpChinese.txt | grep -Po -e ""s?:s?.*" | grep -Po -e ":s?.*" | grep -o -e "".*"" > SimpChinese
    
    while read chinese
    do
    
        # 获取中文对应的id部分
        id=`grep "$chinese" SimpChinese.txt | grep -o -e "^.*:" | grep -o -e "".*"" | head -n 1`
        # 由id获取英文的部分
        english=`grep "$id" English.txt | grep -Po -e ""s?:s?.*" | grep -Po -e ":s?.*" | grep -o -e "".*"" | head -n 1`
    
        # 剔除双引号
        chinese=${chinese:1:-1}
        english=${english:1:-1}
    
        # 去掉两边的空格
        #chinese=`echo $chinese | sed "s/ *$//g"| sed "s/^ *//g"`
    
        # 追加到文件末尾
        echo "$chinese===$english" >> translate.txt
    
    done < SimpChinese
    
    # 将有些不在json键值对里的中文翻译加入translate.txt中
    cat manualTranslate.txt >> translate.txt
    
    while read ChEn 
    do
    
        # 获取中文,由于有些中文字符串有'/',并对其进行处理,主要是为了处理sed中'/'的特殊性
        chinese=`echo $ChEn | grep -o "^.*===" | sed "s/===//" | sed "s/ *$//g" | sed "s/^ *//g" | sed "s^/^\\\\/^g"`
        english=`echo $ChEn | grep -o "===.*$" | sed "s/===//" | sed "s^/^\\\\/^g"`
    
        # 匹配并修改html页面,[::!!??]是根据html中字符串的特征添加的内容
        sed -i -e "s/>s*${chinese}[::!!??]s*</>${english}</" rootfs/index.htm
        sed -i -e "s/>s*${chinese}[::!!??]s*</>${english}</" rootfs/set.htm
        sed -i -e "s/>s*${chinese}[::!!??]s*</>${english}</" rootfs/html/*
    
    done < translate.txt
    
    
    # 部分English.txt
    # {
    # "Right Limit" : "Set Right Limit",
    # "Set Failed!": "Failed to set!",
    # "Ok" : "Ok",
    # "Cancel" : "Cancel",
    # "Set Path" : "StoragePath",
    # "Set PTZ" :" PTZ Settings ",
    # "Auto-Scan" : "Scan",
    # "Left Limit": "Set Left Limit",
    # "Add" : "Add ",
    # "Preset": "Preset",
    # "Path" : "Path",
    # "Browse":"Choose",
    # "Set Succeeded!" :"Set successfully!",
    # "Delete" : "Delete"
    # }
    
    
    # 部分SimpChinese.txt
    # {
    # "Set Path" : "设置存储路径",
    # "Path" : "路径",
    # "Browse" : "选择",
    # "Set Succeeded!" : "设置成功!",
    # "Left Limit" : "设置左边界 ",
    # "Right Limit" : "设置右边界 ",
    # "Preset" : "预置点 ",
    # "Cancel" : "取消",
    # "Set PTZ" : "云台设置 ",
    # "Auto-Scan" : "线性扫描 ",
    # "Delete" : "删除 "
    # "Add" : "添加 ",
    # "Set Failed!" : "设置失败!",
    # "Ok" : "确定",
    # }
  • 相关阅读:
    poj2478
    poj2376
    poj2192
    poj1062
    [HDOJ2639]Bone Collector II(第k优01背包)
    [HDOJ3466]Proud Merchants(贪心+01背包)
    [HDOJ5510]Bazinga(并查集)
    [POJ3264]Balanced Lineup(线段树,区间最值差)
    [HDOJ4325]Flowers(树状数组 离散化)
    [HDOJ5521]Meeting(最短路)
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/4979675.html
Copyright © 2020-2023  润新知