bash命令:用长且全符号字母替换“A”到“B”文件..?

bash命令:用长且全符号字母替换“A”到“B”文件..?

然后:

A=<item ok:my=world"hello/my.earth/my.land/mycity"><item or mylove:heart="myGIRL" oh:myGOD="i-love-you"><item></item></item></item>

B=<item ok:my=world"hello/my.earth/my.land/mycity"><item or mylove:heart="myGIRL" oh:myGOD="i-love-you"><item>LOVER.png;LOVER-ever.png</item></item></item>

也许命令:sed、awk。

我正在更新我的错误写..

#!/bin/bash
replace_a=<item ok:my=world"hello/my.earth/my.land/mycity"><item or mylove:heart="myGIRL" oh:myGOD="i-love-you"><item></item></item></item>
replace_b=<item ok:my=world"hello/my.earth/my.land/mycity"><item or mylove:heart="myGIRL" oh:myGOD="i-love-you"><item>LOVER.png;LOVER-ever.png</item></item></item>
....
....

答案1

使用字符[[:punct:]]sed

% LC_ALL=C sed 's/[[:punct:]]//g' <<<"$A"   
item okmyworldhellomyearthmylandmycityitem or myloveheartmyGIRL

% LC_ALL=C sed 's/[[:punct:]]//g' <<<"$B"
item okmyworldhellomyearthmylandmycityitem or myloveheartmyGIRL ohmyGODiloveyouitemLOVERpngLOVEReverpngitemitemitem

[[:punct:]]匹配语言环境中的以下字符C

! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~

答案2

我发现其他技巧:

sed -i '/earth/d' file.txt
echo '<item ok:my=world"hello/my.earth/my.land/mycity"><item or mylove:heart="myGIRL" oh:myGOD="i-love-you"><item>LOVER.png;LOVER-ever.png</item></item></item>' >> file.txt

这对技巧有好处吗?谢谢你们!

答案3

假设您的“A”字符串保存在名为 input.xml 的文件中:

sed -e 's/<item></<item>LOVER.png;LOVER-ever.png</' input.xml

这会将字符串“LOVER.png;LOVER-ever.png”插入到该行的第一个“空”<item></item> 中,将 A 字符串转换为 B 字符串。

请注意,使用正则表达式解析和操作 XML 或 HTML 或类似的结构化数据文件充其量是不可靠的(即使如此,也仅在最简单的情况下)。为了获得可靠的结果,应使用 XML 解析器或类似的解析器。以及有效的 XML。

相关内容