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

これにより、行の最初の「空白」<item></item>に文字列「LOVER.png; LOVER-ever.png」が挿入され、A文字列がB文字列に変換されます。

正規表現を使用してXMLまたはHTMLまたは同様の構造化データファイルを解析および操作することは、せいぜい信頼できません(最も単純な場合にのみ)。信頼できる結果を得るには、XMLパーサーまたは同様のパーサーを使用する必要があります。有効なXMLです。

関連情報