1. #!/bin/bash
  2.  
  3. # Linux shell multifile content replace with sed
  4. # 声明:
  5. # 本源代码主要是利用两份(中、英文)具有相同键值对的json数据,对html内的中文进行
  6. # 自动化文本替换的代码。
  7. #
  8. # -- 晴 深圳 南山平山村 曾剑锋
  9.  
  10. # 得到中文部分
  11. sed -n "/\"/p" SimpChinese.txt | grep -Po -e "\"\s?:\s?.*" | grep -Po -e ":\s?.*" | grep -o -e "\".*\"" > SimpChinese
  12.  
  13. while read chinese
  14. do
  15.  
  16. # 获取中文对应的id部分
  17. id=`grep "$chinese" SimpChinese.txt | grep -o -e "^.*:" | grep -o -e "\".*\"" | head -n `
  18. # 由id获取英文的部分
  19. english=`grep "$id" English.txt | grep -Po -e "\"\s?:\s?.*" | grep -Po -e ":\s?.*" | grep -o -e "\".*\"" | head -n `
  20.  
  21. # 剔除双引号
  22. chinese=${chinese::-}
  23. english=${english::-}
  24.  
  25. # 去掉两边的空格
  26. #chinese=`echo $chinese | sed "s/ *$//g"| sed "s/^ *//g"`
  27.  
  28. # 追加到文件末尾
  29. echo "$chinese===$english" >> translate.txt
  30.  
  31. done < SimpChinese
  32.  
  33. # 将有些不在json键值对里的中文翻译加入translate.txt中
  34. cat manualTranslate.txt >> translate.txt
  35.  
  36. while read ChEn
  37. do
  38.  
  39. # 获取中文,由于有些中文字符串有'/',并对其进行处理,主要是为了处理sed中'/'的特殊性
  40. chinese=`echo $ChEn | grep -o "^.*===" | sed "s/===//" | sed "s/ *$//g" | sed "s/^ *//g" | sed "s^\/^\\\\\\\\/^g"`
  41. english=`echo $ChEn | grep -o "===.*$" | sed "s/===//" | sed "s^\/^\\\\\\\\/^g"`
  42.  
  43. # 匹配并修改html页面,[::!!??]是根据html中字符串的特征添加的内容
  44. sed -i -e "s/>\s*${chinese}[::!!??]\s*</>${english}</" rootfs/index.htm
  45. sed -i -e "s/>\s*${chinese}[::!!??]\s*</>${english}</" rootfs/set.htm
  46. sed -i -e "s/>\s*${chinese}[::!!??]\s*</>${english}</" rootfs/html/*
  47.  
  48. done < translate.txt
  49.  
  50. # 部分English.txt
  51. # {
  52. # "Right Limit" : "Set Right Limit",
  53. # "Set Failed!": "Failed to set!",
  54. # "Ok" : "Ok",
  55. # "Cancel" : "Cancel",
  56. # "Set Path" : "StoragePath",
  57. # "Set PTZ" :" PTZ Settings ",
  58. # "Auto-Scan" : "Scan",
  59. # "Left Limit": "Set Left Limit",
  60. # "Add" : "Add ",
  61. # "Preset": "Preset",
  62. # "Path" : "Path",
  63. # "Browse":"Choose",
  64. # "Set Succeeded!" :"Set successfully!",
  65. # "Delete" : "Delete"
  66. # }
  67.  
  68. # 部分SimpChinese.txt
  69. # {
  70. # "Set Path" : "设置存储路径",
  71. # "Path" : "路径",
  72. # "Browse" : "选择",
  73. # "Set Succeeded!" : "设置成功!",
  74. # "Left Limit" : "设置左边界 ",
  75. # "Right Limit" : "设置右边界 ",
  76. # "Preset" : "预置点 ",
  77. # "Cancel" : "取消",
  78. # "Set PTZ" : "云台设置 ",
  79. # "Auto-Scan" : "线性扫描 ",
  80. # "Delete" : "删除 "
  81. # "Add" : "添加 ",
  82. # "Set Failed!" : "设置失败!",
  83. # "Ok" : "确定",
  84. # }

Linux shell multifile content replace with sed的更多相关文章

  1. linux shell必知必会sed、awk

    sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往 ...

  2. Linux Shell编程第4章——sed和awk

    目录 sed命令基本用法 sed命令实例 命令选项 文本定位 编辑命令 awk编程模型 awk编程实例 1.awk模式匹配 2.记录和域 3.关系和布尔运算符 4.表达式 5.系统变量 6.格式化输出 ...

  3. Linux shell基础(五)sed命令

    一.sed命令 sed是一种强大的流式编辑器 (stream editor for filtering and transforming text),它能够完美的使用正则表达式,逐行处理文本并把结果显 ...

  4. Linux Shell脚本编程--sed命令详解

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  5. linux shell 修改文本 sed

    linux shell 修改文本echo [root@DSI tmp]# echo 'yhqt1 test1' > test1.txt [root@DSI tmp]# cat test1.txt ...

  6. Linux shell利用sed如何批量更改文件名详解[转载]

     需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...

  7. Linux下的强大工具之一sed(转),Shell必备

    sed命令基本用法sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量.来自管道的文本等等.sed从文本的一个文本行或标准输入中读取 ...

  8. Linux Shell 笔记

    1.查看进程的环境变量 普通:$cat /proc/1642/environ  换行:$cat /proc/1642/environ | tr '\0' '\n' tr的命令格式是tr SET1 SE ...

  9. linux —— shell 编程(整体框架与基础笔记)

    导读 关于shell编程基础的学习,网上有很多资源,如果在校图书馆应该也有一些教程,所以这里对于零碎的基础不做详细记录,而只是对一些常用的概念.命令与操作做一个简要的记录,以备方便查找. (本文所有语 ...

随机推荐

  1. 对linux内核创建flash上的各分区源码进行分析

    1.注意:内核源码版本为4.9 2.首先注意关键字符串"partitions found on MTD device 这句话在drivers/mtd/mtdpart.c的parse_mtd_ ...

  2. POJ-2082 terriblesets(堆栈题+阅读理解)

    1.关于题面的理解:此题故弄玄虚,题面拗口:实际上不过是求若干连续矩形中的所能构成的最大矩形面积. 2.关于做法:虽然是数据结构题,但这种思维角度值得学习.排序简化+等效转化(还带一点回溯的味道) a ...

  3. css hover dropdown

    html-------------------------- <div class="dropdown"> <span>鼠标移动到我这!</span& ...

  4. bash-文件表达式

    一点例子: #!/bin/bash # test-file: Evaluate the status of a file FILE=~/.bashrc if [ -e "$FILE" ...

  5. Java虚拟机组成详解

    导读:详细而深入的总结,是对知识“豁然开朗”之后的“刻骨铭心”,想忘记都难. Java虚拟机(Java Virtual Machine)下文简称jvm,上一篇我们对jvm有了大体的认识,进入本文之后我 ...

  6. mongodb复制集开启安全认证

    之前我有一篇博客写的是“node.js通过权限验证连接MongoDB”,这篇博客上提到如何在启动文件中通过配置auth参数来开启权限认证,但这种认证方式只适合单机节点,当我们使用复制集时应该怎么开启权 ...

  7. 微信小程序-----安装,编写第一个小程序和运行到手机端

    第一步: 微信公众平台注册账号,并选择小程序,网址:mp.weixin.qq.com 填写相关信息,如:主体类型(个人或者企业) AppID  在开发中都是用的到的,服务器域名在网络请求也是用的到的. ...

  8. bzoj1083: [SCOI2005]繁忙的都市 瓶颈生成树

    https://www.lydsy.com/JudgeOnline/problem.php?id=1083 题意:给你一个图,求生成树最大边权最小值 就是求瓶颈生成树(生成树中最大边权最小),最小生成 ...

  9. Linux服务器中木马(肉鸡)手工清除方法(转)

    首先剧透一下后门木马如下: (当然这是事后平静下来后慢慢搜出来的,那个时候喝着咖啡感觉像个自由人) 木马名称 Linux.BackDoor.Gates.5 http://forum.antichat. ...

  10. 图片服务器(FastDFS)的搭建

    1.1 什么是FastDFS FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用Fa ...