-1

可能重复:
sed 替换字符,使某些文本保持不变

如何使用 sed(或 perl)替换某些字符,但保留未知数字不变 in.e. 在文件中有多行是这样的:

<"START=xxx">
<"START=yyy">
<"START=zzz">

“xxx”、“yyy”和“zzz”是不同的未知值(数字)。我想删除结尾 "> 并替换它,也替换开头(但这对我来说并不难)所以最后文件看起来像这样:

<START>xxx</START>
<START>yyy</START>
<START>zzz</START>

先感谢您!

4

3 回答 3

1

为了好玩,一个 Perl 解决方案:

perl -pe's#<"(.+?)=(\d+)">#<$1>$2</$1>#' <file >outfile

或者

perl -pie's#<"(.+?)=(\d+)">#<$1>$2</$1>#' file

用于就地更换

于 2012-09-20T11:55:02.293 回答
1

这应该这样做:

sed 's;<"\([^=]\+\)=\([^"]\+\)">;<\1>\2</\1>;' file

但是请记住,xml使用面向行的工具处理类似内容并不是正确的方法,除非格式非常严格并且案例集中在格式化语言的严格且定义明确的子集上。

于 2012-09-20T11:44:31.943 回答
0
awk -F"=" '{gsub(/\"|<|>/,"");print "<"$1">"$2"</"$1">"}' your_file

测试如下:

> cat temp
<"START=xxx">
<"START=yyy">
<"START=zzz">
> awk -F"=" '{gsub(/\"|<|>/,"");print "<"$1">"$2"</"$1">"}' temp
<START>xxx</START>
<START>yyy</START>
<START>zzz</START>
于 2012-09-20T11:51:55.343 回答