내 텍스트 파일에서 이러한 유형의 코드를 제거하려면 어떻게 해야 합니까?\u003c/p\u003e\n\u003cp\u003e? sed를 시도했지만 백슬래시 때문에 제대로 작동하지 않습니다.
답변1
인용된 문자열에 대한 대부분의 구문에서 구두점 문자 앞의 백슬래시는 구두점 문자가 일반적인 특수 효과를 갖도록 하는 대신 해당 구두점 문자를 나타냅니다. 특히 두 개의 백슬래시는 하나의 백슬래시를 나타냅니다. 백슬래시 뒤에 문자나 숫자가 오면 일반적으로 그 반대의 역할을 합니다. 즉, 문자에 특별한 효과를 줍니다.
'…'
쉘 확장을 방지하려면 sed 코드를 작은따옴표로 묶으십시오 . sed 코드에서 작은 따옴표를 사용해야 하는 경우 '\''
(quote-backslash-quote-quote를 사용하십시오. 첫 번째 따옴표는 작은 따옴표 세그먼트를 끝내고, 앞에 백슬래시가 있기 때문에 문자 그대로 해석되는 따옴표 문자가 있습니다. 마지막 따옴표는 새로운 작은 따옴표 세그먼트를 시작합니다.
Sed는 소수의 백슬래시 시퀀스를 교체해야 하는 경우 훌륭한 도구입니다. sed s
명령에서는 이중 백슬래시를 사용하여 백슬래시를 나타냅니다. s
각 백슬래시 시퀀스에 연속 명령을 사용합니다. 결과 백슬래시 자체가 대체되지 않도록 이중 백슬래시를 백슬래시로 변환하는 작업을 마지막에 배치합니다. 여기 마지막 명령에서는 번호가 매겨진 그룹으로 만들기 위해 .
정규식의 모든 문자를 나타 냈습니다 \(.\)
(여기서 백슬래시로 인해 대괄호가 특수하게 됩니다.기본 정규식 구문sed) \1
대체 텍스트의 그룹을 나타냅니다.
sed -e 's/\\u003c/</g; s/\\u003e/>/g; s/\\n/\n/g; s/\\\(.\)/\1/'
또는 변환 후 임의의 숫자로 일련의 백슬래시를 변환하려면 \u
Perl을 사용할 수 있습니다. 펄에는s
운영자이는 sed의 s
명령과 유사하지만정규식 구문이 약간 다릅니다.그리고 대체를 통해 Perl 코드 작성이 가능해졌습니다.
perl -pe 's/\\u([0-9a-f]{4})/chr($1)/eg; s/\\n/\n/g; s/\\(.)/$1/g'
답변2
이러한 문자는 HTML(또는 유사한) 태그 <
에 속합니다. >
삭제하셔도 되지만, 파일 구조를 보존하기 위해 먼저 변환하신 후, 필요하지 않을 때는 삭제해 보시는 것을 추천드립니다.
입력 크기에 따라 다음을 수행할 수 있습니다.
$ echo -e ($cat encodedfile.txt) > decodedfile.txt
더 큰 파일의 경우 다음을 수행해야 합니다.
$ cat encodedfile.txt | while read -r a; do echo -e $a; done > decodedfile.txt