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 "\".*\"" > SimpChinesewhile 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.txtdone < SimpChinese# 将有些不在json键值对里的中文翻译加入translate.txt中
cat manualTranslate.txt >> translate.txtwhile 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.htmsed -i -e "s/>\s*${chinese}[::!!??]\s*</>${english}</" rootfs/set.htmsed -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" : "确定",
# }

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jquery实时监听输入框值变化

在做web开发时候很多时候都需要即时监听输入框值的变化&#xff0c;以便作出即时动作去引导浏览者增强网站的用户体验感。而采用onchange时间又往往是在输入框失去焦点&#xff08;onblur&#xff09;时候触发&#xff0c;有时候并不能满足条件。 首先看一下dom中元素事件&…

文件过滤_jmeter(七)-BeanShell对数据过滤保存文件

在测试中有时需要对参数化数据进行过滤&#xff0c;实现保存到一个文件。如&#xff1a;某项目&#xff0c;从数据库查询到10万条用户数据&#xff0c;因为有的用户没有权限或者过期了&#xff0c;需要对这份数据筛选出来能正常使用的用户。如下使用beanshell实现此功能。原文件…

如何在mac系统下搭建git服务器

https://zhidao.baidu.com/question/1823748339128066228.html 第一步,下载gitblit http://gitblit.com/ 这里当然是选择linux/osx的版本。下载下来是一个.tar.gz的压缩文件&#xff0c;我下载时最新版本是gitblit-1.7.1.tar.gz 第二步&#xff0c;配置gitblit 创建目录&…

高级开发面试题

1.以前公司做过哪些项目&#xff1b; 2.这些项目都用到哪些技术&#xff1b; 3.redis里有哪些数据类型&#xff0c;对比memcache和redis&#xff1b; 4.目前平台的系统架构&#xff1b; 5.dubbo的server分了几个&#xff0c;怎么分的&#xff1b; 6.集群的负载策略&#xff1b;…

部品se分析_汽车储物箱部品模具,二色产品模具专业厂

汽车储物箱部品模具PVC塑料型材挤出模具是挤出生产线的核心部分&#xff0c;它包括口模(又称模头)、定型模、冷却水箱等。口模通过法兰盘与挤出机机头上的法兰盘组装在一起&#xff0c;安装加热圈、加热板&#xff0c;接通电源和热电偶。定型模和冷却水箱装用螺钉固定在定型台&…

WordPress二次开发经验简短总结

1.建议直接在客户给的服务器环境上安装WordPress程序再二次开发&#xff0c;如果在自己的开发机上安装好后再迁移过去&#xff0c;不同版本数据库或不同版本PHP环境可能会砸出坑。 2.由于国情原因&#xff0c;大陆访问googleapis.com呈现龟速特征&#xff0c;参考我之前的文章…

【Lucene4.8教程之五】Luke

一、Luke基本内容 1、Luke简介 Luke可用于查看Lucene创建的索引&#xff0c;并对其进行基本操作。 2、创建Luke &#xff08;1&#xff09;从Github上下载源文件 https://github.com/tarzanek/luke &#xff08;2&#xff09;解压文件后&#xff0c;打开DOS窗口&#xff0c;进入…

计算mView在view周围的位置

为什么80%的码农都做不了架构师&#xff1f;>>> /*** 计算mView在view周围的位置** param view** param mMargin mView与view或边界的间距* * titleBarHeight 标题栏的高度* mContext当前的Activity*/private void aroundView(View view, float mMargin) …

微信小程序6 - 页面之间传参及通知系统封装

1. 简单传参 wx.navigateTo({url: /pages/demo/index/index?id1})/pages/demo/index/index.js 中onLoad(options){var id options.id; //获取通过url参数传递来的参数}2. 复杂传参var json JSON.stringify({a:1});wx.navigateTo({url: /pages/demo/index/index?json json})…

aardio教程_官方AARDIO课程已经开课了!学习的速来报道!

aardio视频培训课程(2018新版)因为课程都是制作视频 - 所以上课时间不受限制。1、本次课程共计50节视频课程&#xff0c;每周一课&#xff0c;培训时间为一年(1月15日以后报名按报名交费时间开始计算)。2、所有参加本次培训课程 &#xff0c;可同时获取为期2年的技术支持服务(1…

php 开源建站工具 -- 资料收集

迅睿 CMS 开源建站程序 XunRuiCMShttps://www.xunruicms.com/

神马是代码简单的cmd模式,这就是!

小狼正在研究 “怎么查找连在一起的同色方块&#xff1f;”算法问题 &#xff0c;突然感觉我是不是需要一种开发模式&#xff0c;不然感觉自己的代码好乱的。 可能是研究算法吧&#xff0c;导致小狼的思路特别清晰&#xff0c;加上也用了差不多1年的nodejs、seajs&#xff0c;对…

找出数组中两个只出现了一次的数

原题&#xff1a;给一组数&#xff0c;只有两个数只出现了一次&#xff0c;其他所有数都是成对出现的。怎么找出这两个数。编写函数实现。 对于一组数中只有一个数只出现一次&#xff0c;其他所有数都是成对出现的&#xff0c;我们采用了对全部数组元素进行异或&#xff0c;经过…

aspx隐藏前台控件div_c# – 代码隐藏页面无法“查看”aspx页面中声明的任何项目/控件...

这是我的Default.aspx页面(删除了不必要的细节)&#xff1a;UsernamePassword这是代码隐藏(删除了不必要的细节)&#xff1a;namespace webapp{public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){(webapp.MasterPages…

前端javascript知识(二)

documen.write和 innerHTML的区别 document.write只能重绘整个页面 innerHTML可以重绘页面的一部分 浏览器检测通过什么&#xff1f; &#xff08;1&#xff09; navigator.userAgent &#xff08;2&#xff09; 不同浏览器的特性&#xff0c;如addEventListener JavaScript有哪…

前端工具收集

1. Vue.js 介绍 | Vue.js Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项…

HDU 1754 I Hate It

线段树&#xff0c;单点更新&#xff0c;求区间最值 /* *********************************************** Author :Zhou Zhentao Email :774388357qq.com Created Time :2015/11/20 17:21:35 File Name :acm.cpp ***************************************…

请问运行py文件的时候怎么样可以不让那个黑框一闪...

wait input("wait")转载于:https://www.cnblogs.com/ftm-datablogs/p/7857831.html

c++模板类静态成员变量_一文讲透父子类中静态变量,成员变量初始化顺序原理...

推荐&#xff1a;从面试到入职到离职&#xff0c;我在B站工作的30天时光 爱了爱了&#xff0c;Alibaba顶级MySQL调优手册到手&#xff0c;加薪妥了 爱了爱了&#xff0c;Spring Cloud Alibaba内部微服务架构笔记真的太牛了 本文主要是想分析一下静态变量和成员变量的初始化顺序…

点击放大图片

<style> body{ text-align:center} div{ margin:50px auto}</style><script type"text/javascript"> function clik(t){ //获取所有的img标签 var imgs document.getElementsByTagName("img"); …