【shell】sed后向引用替换文本

要求如下:

  原文
        <server name="92服"  port="10092" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
        <server name="93服"  port="10093" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
        <server name="94服"  port="10094" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
        <server name="95服"  port="10095" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
        <server name="96服"  port="10096" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>

       变为
         <server name="92服"  port="10092" os="android"  hidden="false" recommendrate="0" newport="" zoneid="10092" tabname="地区服"/>
        <server name="93服"  port="10093" os="android"  hidden="false" recommendrate="0" newport="" zoneid="10092" tabname="地区服"/>
        <server name="94服"  port="10094" os="android"  hidden="false" recommendrate="0" newport="" zoneid="10092" tabname="地区服"/>
        <server name="95服"  port="10095" os="android"  hidden="false" recommendrate="0" newport="" zoneid="10092" tabname="地区服"/>
        <server name="96服"  port="10096" os="android"  hidden="false" recommendrate="0" newport="" zoneid="10092" tabname="地区服"/>

     需求就是将zoneid根据port填上

利用sed后向引用即可,方法如下:

[root]$ cat setZone.txt  | sed -e ‘s/\(port="\)\([0-9]+\)\(.*\)\(zoneid="\)/\1\2\3\4\2/g‘
<server name="92服"  port="10092" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
<server name="93服"  port="10093" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
<server name="94服"  port="10094" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
<server name="95服"  port="10095" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
<server name="96服"  port="10096" os="android"  hidden="false" recommendrate="0" newport="" zoneid="" tabname="地区服"/>
时间: 2024-10-25 19:07:41

【shell】sed后向引用替换文本的相关文章

Shell中命令替换$(...)与后置引用`...`的区别与联系

一. 命令替换 a.在bash中,$( )与``(反引号)都是用来作命令替换的. b.命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行. 例子1: $ echo today is $(date "+%Y-%m-%d") today is 2014-07-01 二. $( )与``(反引号) (1)区别 `CMD`在执行时,shell会不管``内是什么都先进行解释,再把解释后的最终结果送给shell去执行.如果解释后的最终结果

linux 给文件替换字符串/替换内容/替换某行 (shell,sed)

本文是要讲linux 不打开文档/文件的情况下,替换文本内容.打开文档,在文档/文件内替换内容的,可以用vim,可参考这篇文章vim 替换文本 . 话题相关#linux 文件替换字符串#sed 字符串替换#shell 文件替换某行#linux 替换指定行内容#linux 替换某行 linux一般用sed来替换文本到指定行. 基本语法 s (substitute)为查找替换命令 # 在输出或打印中,替换字符串.并不改变原文件内容sed '作用范围s/替换查找目标/替换成为/替换目标option'

Sed替换文本中的指定内容

可以这样做:方法1:sed -i 's/被替换的内容/要替换成的内容/' file 方法2:sed 's/被替换的内容/要替换成的内容/g' file > file.outmv file.out file 这里注意:不能这样做:sed 's/被替换的内容/要替换成的内容/g' file > file这样只会清空源文件. Sed替换文本中的指定内容,布布扣,bubuko.com

Shell第二篇:正则表达式和文本处理工具

一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则:     比如我们描述:4条腿      你可能会想到的是四条腿的动物或者桌子,椅子等     继续描述:4条腿,活的           就只剩下四条腿的动物这一类了 在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面我们就为大家介绍三种文本处理工具/命令:grep.sed.awk,它们三者均可以解释正

SHELL SED AWK 语法

原文地址:http://blog.chinaunix.net/uid-15811445-id-176318.html Shell shell 测试表达式 -a file 检查文件是否存在(与-e同) -b file 检查文件是否为特殊块设备 -c file 检查文件是否为特殊字符设备 -d fil 检查文件是否为目录 -e file 检查文件是否存在(与-a同) -g file 检查文件属性位set- group-id是否置1 -h file 检查文件是否为符号链接(与-L 同) -k file

linux中批量替换文本中字符串--转载

(一)通过vi编辑器来替换.vi/vim 中可以使用 :s 命令来替换字符串.:s/well/good/ 替换当前行第一个 well 为 good:s/well/good/g 替换当前行所有 well 为 good:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 goodn 为数字,若 n 为 .,表示从当前行开始到最后一行:%s/well/good/(

Mac上通过Linux命令行批量查找和替换文本

一般在本地电脑上批量替换文本有许多工具可以做到,比如Emeditor,sublime text ,但在linux和mac上相关的编辑器有这个功能的不多,另外大多服务器上都是无图形界面的,因此收集了几条针对linux命令行备忘,实现批量替换文本内容的命令: 批量查找某个目下文件的包含的内容 grep -rn "要找查找的文本" ./ 通过sed批量查找并替换文件内容. sed -i "s/要找查找的文本/替换后的文本/g"grep -rl "要找查找的文本&

linux下批量查找/替换文本内容

一般在本地电脑上批量替换文本有许多工具可以做到,比如sublime text ,但大多服务器上都是无图形界面的,为此收集了几条针对linux命令行 实现批量替换文本内容的命令: 1.批量查找某个目下文件的包含的内容,例如: #   grep -rn "要找查找的文本" ./ 2.批量查找并替换文件内容. #   sed -i "s/要找查找的文本/替换后的文本/g" `grep -rl "要找查找的文本" ./` linux下批量查找/替换文本内

Python自动化开发—EX.3(实简单的shell sed功能)

#程序1: 实现简单的shell sed替换功能 import sys,os old_file = open('test.txt','r',encoding='utf-8') new_file = open('test_bak.txt','w',encoding='utf-8') old_line = input('替换前内容>>:') new_line = input('替换后内容>>:') for line in old_file: #print(line.strip()) i