Linux shell multifile content replace with sed
生活随笔
收集整理的這篇文章主要介紹了
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" : "確定",
# }
?
總結
以上是生活随笔為你收集整理的Linux shell multifile content replace with sed的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到家里来了好几只猫
- 下一篇: Linux环境下安装部署AWStats日