다음 내용이 포함된 파일이 있습니다.
<general id="7" src="xyz" srcType="abc" link="positive" />
<general id="3" src="xyz" srcType="pqr" link="positive" />
..
src
각 이름을 대문자로 바꾸려고 합니다 . 예를 들어, 위에서는 모든 것을 (첫 글자는 대문자) xyz
로 바꾸고 싶습니다 .Xyz
예상 출력은 다음과 같습니다.
<general id="7" src="Xyz" srcType="abc" link="positive" />
<general id="3" src="Xyz" srcType="pqr" link="positive" />
..
나시험을 마친정규식 패턴은 src="(.*?)"
줄에서 "xyz"를 추출할 수 있지만 이를 사용하여 sed
파일을 바꾸는 방법은 무엇입니까?
따라해봤는데 안되네요
sed -E 's/srcName="(.*?)"/Xyz/1' 파일 이름
보너스 질문인데 어떻게 요약할 수 있나요? scr="
와 사이의 모든 내용은 "
첫 번째 문자가 대문자인 단어로 변환될 수 있습니다.
답변1
XML을 편집하려면 XML 인식 도구를 사용하십시오. 예를 들어,xsh, 내가 사용하는 유지 관리 도구입니다.
open file.xml ;
for //@src set . xsh:subst(., "(.)", "\U$1") ;
save :b ;
답변2
XML 지원 도구가 확실히 좋은 방법입니다! 빠른 해킹:
GNU에서 sed
:
sed -r 's/src="([a-z])/src="\U\1\E/g' file.xml
더 복잡한 변경에는 Perl을 권장합니다.
perl -pe 's/src="\K(\w+)/ucfirst($1)/e' file.xml
어디
perl -pe command
"readline, 명령, 인쇄" 루프입니다.s/regexp/expression/e
regexp를 eval(expression)의 결과로 바꿉니다.src="\K
왼쪽 컨텍스트 모드입니다
답변3
awk 명령을 사용해 보았지만 훌륭하게 작동합니다.
awk -F 'src="' '{$2=(toupper(substr($2,1,1))substr($2,2));$2="src="$2;print $0}' filename|sed 's/src=/&"/g'
산출
<general id="7" src="Xyz" srcType="abc" link="positive" />
<general id="3" src="Xyz" srcType="pqr" link="positive" />