txt
다음과 같은 파일이 있습니다 .
<sss>ss<
또는
<firstword>anotherword<
나는 이것이 이렇게 보이기를 원한다.
<sss>ss</sss>
또는
<firstword>anotherword</firstword>
기본적으로 첫 번째 단어를 가져와 닫는 태그에 넣습니다.
내가 무엇을 시도했는지, 대답이 무엇인지 묻기 전에는 아무것도 생각할 수 없습니다.
답변1
입력이 있습니다:
<abc>def<
<firstword>anotherword</firstword>
<ghi>klm<
사용:
sed 's/<\([^>]*\)>\(.*\)<$/<\1>\2<\/\1>/' input
산출:
<abc>def</abc>
<firstword>anotherword</firstword>
<ghi>klm</ghi>
sed 줄은 <
(because <$
)로 끝나는 줄에만 영향을 미치고 첫 번째 쌍과 '><' 사이의 패턴을 캡처 <>
하고 첫 번째 쌍(끝 '>' 포함)을 복사하여 끝에 모든 것을 다시 붙여 넣습니다.
답변2
다음은 Anthon의 솔루션과 본질적으로 동일한 Perl 접근 방식입니다 sed
.
$ perl -pe 's/<(.+)>(.+)</<$1>$2<\/$1>/' file
<sss>ss</sss>