是否有任何简单的方法可以使用sed命令将父标记1
下的{tag}的值从2
替换为a
。
XML文件: -
<a><i>1</i><j>xyz</j></a>
<b><i>1</i><j>abc</j></b>
我执行了sed -i 's/<i>1<\/i>/<i>2<\/i>/g' filePath
,这导致父标记1
和2
中的i标记值从a
更改为b
答案 0 :(得分:0)
使用awk
awk '/^<a>/ {sub("1","2")}1' file
<a><i>2</i><j>xyz</j></a>
<b><i>1</i><j>abc</j></b>
使用sed
sed '/^<a>/s/1/2/' file
<a><i>2</i><j>xyz</j></a>
<b><i>1</i><j>abc</j></b>
以下是通用awk/sed
,可将任何数字更改为2
awk '/<a>/ {sub(/>[^<]+</,">2<")}1' file
<a><i>2</i><j>xyz</j></a>
<b><i>1</i><j>abc</j></b>
sed '/^<a>/s/>[^<][^<]*</>2</' file
<a><i>2</i><j>xyz</j></a>
<b><i>1</i><j>abc</j></b>
答案 1 :(得分:0)
通用方法:
sed -i 's/<a><i>[0-9]\+<\/i>/<a><i>2<\/i>/g' filePath
具体方法:
sed -i 's/<a><i>1<\/i>/<a><i>2<\/i>/g' filePath
答案 2 :(得分:0)
sed -i '/<a>/ s#<i>1<#<i>2<#' YourFile
假设: - 和 1 在同一条线上 - 结构是相同的(空格char,没有子类或每个
的几个标签这是一个非常具体的请求,可能需要更通用(比如任何数字内容被另一个替换,......)
在此示例中
sed -i '/<a>/ s#1#2#' YourFile
就够了