それから:
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
これにより、行の最初の「空白」<item></item>に文字列「LOVER.png; LOVER-ever.png」が挿入され、A文字列がB文字列に変換されます。
正規表現を使用してXMLまたはHTMLまたは同様の構造化データファイルを解析および操作することは、せいぜい信頼できません(最も単純な場合にのみ)。信頼できる結果を得るには、XMLパーサーまたは同様のパーサーを使用する必要があります。有効なXMLです。