HTML 출력의 파일 형식 지정

HTML 출력의 파일 형식 지정

시스템에서 사용자의 실패한 모든 로그인을 포함하는 로그 파일의 형식을 지정하는 작은 스크립트가 있습니다. 데이터를 다음 형식의 텍스트 파일로 출력하는 스크립트를 작성했습니다(두 개의 열, 첫 번째는 실패한 로그인 시도 횟수이고 두 번째는 사용자입니다).

1,325 Unknown  
505 root   
17 adm  
16 ftp  
etc...  

이 방법으로 콘솔에서 HTML 출력으로 파일 형식을 지정해야 합니다(파일의 각 줄은 html 개행 문자로 인쇄됩니다).

<html>
<body><h1>Failed Login Attempts</h1> 
<br />1,325 Unknown 
<br />505 Root 
<br />17 adm 
etc....
</body>
</html>

현재 내가 하는 일은 파일을 변수에 저장한 다음 다음과 같이 해당 변수를 html에 넣는 것입니다.

file=$(cat finalo) #file name is finalo
#print to console
echo "
<html>
<body><h1>Failed Login Re...</h1>
<br />$file
</body>
</html>"

출력에는 전체 파일 내용이 한 줄에 표시됩니다 html <br />. 내 질문은 파일의 각 줄을 각 줄에 인쇄하려면 어떻게 해야 합니까 <br />?

파일의 각 특정 줄을 읽고 변수에 저장한 다음 다음 <br />과 같이 각 줄에 변수를 사용하려고 합니다.

line1=$(sed -n '1p' < finalo)
line2=$(sed -n '2p' < finalo)
line3=$(sed -n '3p' < finalo)

그리고:

<html>
<body><h1>Failed Login Report</h1>
<br />$line1
<br />$line2
<br />$line3
etc...

이 해결 방법은 올바른 출력을 제공했지만 이 해결 방법이 지저분하다는 점 외에도 파일에 하드 코딩된 숫자와 다른 줄 수가 있으면 표시되지 않는다는 큰 결함이 있습니다.

어떤 도움이라도 대단히 감사하겠습니다! 그건 그렇고, 이것은 숙제입니다.

답변1

생각보다 쉽습니다.

echo "
<html>
<body><h1>Failed Login Attempts</h1>"

# The following line prepends <br /> before each line in finalo
sed 's|^|<br />|' finalo

echo "
</body>
</html>"

답변2

당신은 또한 사용할 수 있습니다while

#!/bin/bash
echo "
<html>
<body><h1>Failed Login Attempt</h1>"
while read line
do
    echo "<br />$line"
done < file
echo "</body>
</html>"

아니면 함수를 사용하세요

function r_lines()
{
    while read line
    do
        echo "<br />$line"
    done < file
    return $line
}

echo "
<html>
<body><h1>Failed Login Attempts</h1>
$(r_lines)
</body>
</html>"

관련 정보