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编程基础的学习,网上有很多资源,如果在校图书馆应该也有一些教程,所以这里对于零碎的基础不做详细记录,而只是对一些常用的概念.命令与操作做一个简要的记录,以备方便查找. (本文所有语 ...
随机推荐
- [BZOJ1026]windy数
Description windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道,在A和B之间,包括A和B,总共有多少个windy数? In ...
- Redis之Redis
Redis 环境安装 安装 如果已经安装了老版本3.0.6 1. 卸载软件 sudo apt-get remove redis-server 2. 清除配置 sudo apt-get remove - ...
- mysql创建数据库和用户
create database sonar character set utf8 collate utf8_general_ci; flush privileges; grant all privil ...
- Python基础笔记系列七:字符串定义和访问
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字符串定义和访问 1.字符串基础 a.字符串可以用单引号.双引号.三引号( ...
- SPA(单页面web应用程序)
单页web应用(single page web application,SPA),就是只有一张web页面的应用,是加载单个HTML页面并在用户与应用程序交互时动态更新该页面的web应用程序. 浏览器一 ...
- springboot项目属性配置及注意事项
在idea编辑器建的springboot项目中的resources包下的application.properties这个就是配置文件. 另外配置文件的文件名还可以是application.yml,在r ...
- JS检查数组中是否存在某个值
//三个参数,在array中查找needle,bool为布尔量,如果为true则返回needle在array中的位置function inArray2(needle,array,bool){ ...
- git-----初始化配置添加用户名和密码
Git是分布式版本控制系统,GitHub 是最大的 Git 版本库托管商,是成千上万的开发者和项目能够合作进行的中心. 大部分 Git 版本库都托管在 GitHub,很多开源项目使用 GitHub 实 ...
- Kotlin------函数和代码注释
定义函数 Kotlin定义一个函数的风格大致如下 访问控制符 fun 方法名(参数,参数,参数) : 返回值类型{ ... ... } 访问控制符:与Java有点差异,Kotlin的访问范围从大到小分 ...
- HLSL实现简单的图像处理功能
由于对于dxva2解码得到的数据不宜copy回内存给CPU处理,所以最好的办法是在GPU上直接进行处理.D3D的像素着色器能够对像素直接进行操作,实现点运算极其简单方便,简单的卷积运算效果也非常好.但 ...