저는 서버에 대한 데이터를 수집하고 이를 멋진 HTML 이메일 보고서로 형식화하는 스크립트를 작업해 왔습니다. 지금까지 sed를 사용하여 html 템플릿의 값을 대체해 왔고 대부분 괜찮았지만 변수를 기반으로 여러 줄의 html 블록을 임의의 횟수만큼 삽입해야 하는 상황에 직면했습니다. sed가 여러 줄에서 너무 잘 작동하지 않는 것 같기 때문에 어떻게 해야할지 잘 모르겠습니다. 어쩌면 내가 고려하지 않은 Perl이나 awk의 방법이 있을 수도 있습니다.
다음은 얼마나 많은 파일이 있는지에 따라 기존 템플릿에 0-n 테이블 블록을 삽입해야 하는 예입니다.
$files의 f에 대해
<tr class="details">
<td> f.$DATE </td>
<td> f.$APPLIANCE </td>
<td> f.$HOST </td>
<td> f.$MDL </td>
</tr>
등.
감사해요!
답변1
여기 문서를 사용하세요:
for f in $files; do
cat <<END_HTML
<tr class="details">
<td> f.$DATE </td>
<td> f.$APPLIANCE </td>
<td> f.$HOST </td>
<td> f.$MDL </td>
</tr>
END_HTML
done
$files
그러면 이름이 지정된 변수가 해당 값으로 확장되어 에 있는 단어 수만큼 블록이 출력됩니다 .
답변2
"스니펫"을 사용해 볼 수 있습니다. 많은 텍스트 편집기나 IDE가 이 기능을 지원합니다. 코딩 블록에 대한 일부 템플릿을 사용자 정의하고 이름을 지정한 다음 이름과 탭을 입력하여 코딩 블록으로 확장할 수 있습니다. 또한 탭하여 자리 표시자를 편집할 수 있습니다.