#!/bin/bash

#                  Linux shell multifile content replace with sed
# 声明:
# 本源代码主要是利用两份(中、英文)具有相同键值对的json数据,对html内的中文进行
# 自动化文本替换的代码。
#
# -- 晴 深圳 南山平山村 曾剑锋 # 得到中文部分
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 `
# 由id获取英文的部分
english=`grep "$id" English.txt | grep -Po -e "\"\s?:\s?.*" | grep -Po -e ":\s?.*" | grep -o -e "\".*\"" | head -n ` # 剔除双引号
chinese=${chinese::-}
english=${english::-} # 去掉两边的空格
#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" : "确定",
# }

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. AVL模板

    感谢此博客 #include <bits/stdc++.h> #define pb push_back #define mp make_pair #define de(x) cout &l ...

  2. 在centos 6.9下Protocol Buffers数据传输及存储协议的使用(python)

    我们知道Protocol Buffers是Google定义的一种跨语言.跨平台.可扩展的数据传输及存储的协议,因为将字段协议分别放在传输两端,传输数据中只包含数据本身,不需要包含字段说明,所以传输数据 ...

  3. Mac 升级node与npm

    第一步,先查看本机node.js版本: node -v 第二步,清除node.js的cache: sudo npm cache clean -f 第三步,安装 n 工具,这个工具是专门用来管理node ...

  4. scp 上传 下载 文件

    linux 中的ssh命令: scp 可以用来上传本地文件到远程服务器 或下载远程服务器中的文件到本地 1. 上传本地文件到远程服务器 scp readme.md user@www.*****.com ...

  5. Konva的使用

    KonvaJS 快速入门 Konva 是一个 基于 Canvas 开发的 2d js 框架库, 它可以轻松的实现桌面应用和移动应用中的图形交互交互效果. Konva 可以高效的实现动画, 变换, 节点 ...

  6. 在Eclipse中快速添加main方法

    方法一: 在创建类时自动添加,勾选“public static void main(String[]   args)” 方法二: 输入main之后按"alt+/"组合键,选择如图所 ...

  7. mysql 命令行参数说明

    mysql --help -h : 主机名 -u : 用户名 -p : 密码 -P : 端口,不写默认(3306) -D :指定数据库(一般不指定) -e :查询语句 --column-names : ...

  8. python脚本7_打印九九乘法表

    #打印九九乘法表 for i in range(1,10): s = "" for j in range(1,i+1): s += str(j) + '*' + str(i) + ...

  9. 输入T,返回TResult的委托

    下面的 委托 兼容输入 参数T,并且 返回值类型为TResult 的 方法(即封装一个具有一个参数并返回TResult 参数指定的类型值的方法) public delegate TResult Fun ...

  10. 值类型的TryParse

    值类型(Struct(如:DateTime).基本类型(如:double).枚举类型)的TryParse方法,通常可使用该方法将“字符串”转换为当前类型,并out出.比如:日期格式的字符串   转换为 ...