Linux shell multifile content replace with sed
- #!/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的更多相关文章
- linux shell必知必会sed、awk
sed是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往 ...
- Linux Shell编程第4章——sed和awk
目录 sed命令基本用法 sed命令实例 命令选项 文本定位 编辑命令 awk编程模型 awk编程实例 1.awk模式匹配 2.记录和域 3.关系和布尔运算符 4.表达式 5.系统变量 6.格式化输出 ...
- Linux shell基础(五)sed命令
一.sed命令 sed是一种强大的流式编辑器 (stream editor for filtering and transforming text),它能够完美的使用正则表达式,逐行处理文本并把结果显 ...
- Linux Shell脚本编程--sed命令详解
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- linux shell 修改文本 sed
linux shell 修改文本echo [root@DSI tmp]# echo 'yhqt1 test1' > test1.txt [root@DSI tmp]# cat test1.txt ...
- Linux shell利用sed如何批量更改文件名详解[转载]
需求背景: 目录A用来存放自动化的包生成的apk文件,现在开发修改了包名的 命名规则:环境名称(pro|uat)-release-日期-v版本号.apk 原来的是思路是通过正则表达式匹配新的包名,但 ...
- Linux下的强大工具之一sed(转),Shell必备
sed命令基本用法sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量.来自管道的文本等等.sed从文本的一个文本行或标准输入中读取 ...
- Linux Shell 笔记
1.查看进程的环境变量 普通:$cat /proc/1642/environ 换行:$cat /proc/1642/environ | tr '\0' '\n' tr的命令格式是tr SET1 SE ...
- linux —— shell 编程(整体框架与基础笔记)
导读 关于shell编程基础的学习,网上有很多资源,如果在校图书馆应该也有一些教程,所以这里对于零碎的基础不做详细记录,而只是对一些常用的概念.命令与操作做一个简要的记录,以备方便查找. (本文所有语 ...
随机推荐
- 对linux内核创建flash上的各分区源码进行分析
1.注意:内核源码版本为4.9 2.首先注意关键字符串"partitions found on MTD device 这句话在drivers/mtd/mtdpart.c的parse_mtd_ ...
- POJ-2082 terriblesets(堆栈题+阅读理解)
1.关于题面的理解:此题故弄玄虚,题面拗口:实际上不过是求若干连续矩形中的所能构成的最大矩形面积. 2.关于做法:虽然是数据结构题,但这种思维角度值得学习.排序简化+等效转化(还带一点回溯的味道) a ...
- css hover dropdown
html-------------------------- <div class="dropdown"> <span>鼠标移动到我这!</span& ...
- bash-文件表达式
一点例子: #!/bin/bash # test-file: Evaluate the status of a file FILE=~/.bashrc if [ -e "$FILE" ...
- Java虚拟机组成详解
导读:详细而深入的总结,是对知识“豁然开朗”之后的“刻骨铭心”,想忘记都难. Java虚拟机(Java Virtual Machine)下文简称jvm,上一篇我们对jvm有了大体的认识,进入本文之后我 ...
- mongodb复制集开启安全认证
之前我有一篇博客写的是“node.js通过权限验证连接MongoDB”,这篇博客上提到如何在启动文件中通过配置auth参数来开启权限认证,但这种认证方式只适合单机节点,当我们使用复制集时应该怎么开启权 ...
- 微信小程序-----安装,编写第一个小程序和运行到手机端
第一步: 微信公众平台注册账号,并选择小程序,网址:mp.weixin.qq.com 填写相关信息,如:主体类型(个人或者企业) AppID 在开发中都是用的到的,服务器域名在网络请求也是用的到的. ...
- bzoj1083: [SCOI2005]繁忙的都市 瓶颈生成树
https://www.lydsy.com/JudgeOnline/problem.php?id=1083 题意:给你一个图,求生成树最大边权最小值 就是求瓶颈生成树(生成树中最大边权最小),最小生成 ...
- Linux服务器中木马(肉鸡)手工清除方法(转)
首先剧透一下后门木马如下: (当然这是事后平静下来后慢慢搜出来的,那个时候喝着咖啡感觉像个自由人) 木马名称 Linux.BackDoor.Gates.5 http://forum.antichat. ...
- 图片服务器(FastDFS)的搭建
1.1 什么是FastDFS FastDFS是用c语言编写的一款开源的分布式文件系统.FastDFS为互联网量身定制,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用Fa ...