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입니다.

관련 정보