내 디렉토리에는 ~/foo
많은 HTML 파일이 포함되어 있습니다. 각각에는 원하지 않는 요소가 다릅니다 title
. 즉, 각 파일에는 코드가 포함되어 있습니다.
<title>something unwanted</title>
이러한 파일 중 다수에는 span
다음과 같은 요소 도 포함되어 있습니다.
<span class="org-document-info-keyword">#+Title:</span>
<span class="org-document-title">correct title</span>
title
모든 HTML 파일을 검사하고 두 번째 유형의 코드 블록이 포함된 모든 파일에 대해 원하지 않는 콘텐츠를 올바른 제목으로 바꾸는 스크립트를 작성하고 싶습니다 .
헤더를 교체한 후 스크립트에서 두 번째 블록의 코드를 제거하고 싶습니다.
예를 들어 스크립트를 실행합니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!-- Created by htmlize-1.47 in css mode. -->
<html>
<head>
<title>foo.org</title>
<style type="text/css">
<!--
body {
color: #839496;
background-color: #002b36;
}
.org-document-info {
/* org-document-info */
color: #839496;
}
.org-document-info-keyword {
/* org-document-info-keyword */
color: #586e75;
}
.org-document-title {
/* org-document-title */
color: #93a1a1;
font-size: 130%;
font-weight: bold;
}
.org-level-1 {
/* org-level-1 */
color: #cb4b16;
font-size: 130%;
}
a {
color: inherit;
background-color: inherit;
font: inherit;
text-decoration: inherit;
}
a:hover {
text-decoration: underline;
}
-->
</style>
</head>
<body>
<pre>
<span class="org-document-info-keyword">#+Title:</span> <span class="org-document-title">my desired title
</span><span class="org-document-info-keyword">#+Date:</span> <span class="org-document-info"><2015-08-23 Sun>
</span>
<span class="org-level-1">* hello world</span>
Vivamus id enim.
</pre>
</body>
</html>
결과가 나와야 한다
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!-- Created by htmlize-1.47 in css mode. -->
<html>
<head>
<title>my desired title</title>
<style type="text/css">
<!--
body {
color: #839496;
background-color: #002b36;
}
.org-document-info {
/* org-document-info */
color: #839496;
}
.org-document-info-keyword {
/* org-document-info-keyword */
color: #586e75;
}
.org-document-title {
/* org-document-title */
color: #93a1a1;
font-size: 130%;
font-weight: bold;
}
.org-level-1 {
/* org-level-1 */
color: #cb4b16;
font-size: 130%;
}
a {
color: inherit;
background-color: inherit;
font: inherit;
text-decoration: inherit;
}
a:hover {
text-decoration: underline;
}
-->
</style>
</head>
<body>
<pre>
<span class="org-document-info-keyword">#+Date:</span> <span class="org-document-info"><2015-08-23 Sun>
</span>
<span class="org-level-1">* hello world</span>
Vivamus id enim.
</pre>
</body>
</html>
이 작업을 쉽게 수행할 수 있는 도구가 Linux에 있습니까?
답변1
아마도 스크립트를 작성하는 것이 더 나을 것입니다. 이 스크립트는 강력하지 않지만(빈 문자열을 확인하지 않고 여러 줄의 필수 헤더를 고려하지 않는 등) 시작하는 데 도움이 될 수 있습니다.지원미친 짓을 시작하기 전에.
#! /bin/bash
FILES="./*.html"
for f in $FILES
do
grep '.*org-document-title">.*' $f |\
sed -e 's/.*org-document-title">\([^<]\+\).*/\n\1/g' |\
tail -n 1 |\
xargs -I new_title sed -i.bak 's/<title>[^>]\+<\/title>/<title>new_title<\/title>/g' $f
done
이는 헤더를 새 헤더로 바꾸는 것뿐입니다 . 다른 단계를 수행하고 필요하지 않은 요소를 my desired title
제거하여 이를 확장할 수 있습니다 .span