와우, 이 질문에 제목을 붙일 좋은 방법이 생각나지 않습니다. 기본적으로 다음과 같은 데이터가 포함된 "출석"이라는 파일이 있습니다.
11/06/2014 101.11.001.01 FirstName LastName
11/06/2014 101.11.001.01 FirstName LastName
11/06/2014 101.11.001.01 FirstName LastName
11/06/2014 101.11.001.01 FirstName LastName
기본적으로 날짜, IP 주소, 이름, 성입니다. 위의 내용은 "출석" 파일의 형식입니다. 사용자가 A.) FN/LN을 입력하고 로그인한 날짜 목록을 받거나 B.) 날짜를 입력하고 목록을 받을 수 있는 텍스트 상자와 제출 버튼이 있는 html 페이지를 만들었습니다. 해당 날짜에 로그인한 사용자 수.
원하는 결과를 얻었지만 브라우저에 표시된 grep 결과는 다음과 같이 모두 한 줄에 표시됩니다.
11/06/2014 101.11.001.01 FirstName LastName 11/06/2014 101.11.001.01 FirstName LastName 11/06/2014 101.11.001.01 FirstName LastName 11/06/2014 101.11.001.01 FirstName LastName
분명히 이것은 차선책입니다. 별도의 줄에 grep 결과를 표시해야 합니다. 아래는 내 .cgi 파일입니다. "getvars"는 교수가 변수 유형을 변환하기 위해 작성한 스크립트일 뿐입니다. 또한 같은 성을 가진 사람이 없기 때문에 성을 찾기만 하면 되는 지름길을 택했습니다.
#!/bin/bash
. ~/bin/getvars
if [ ! -z "$LN" ]; then
cat attendance | grep $LN
elif [ ! -z "$DATE" ]; then
cat attendance | grep $DATE
else echo No Records Found
fi
최대한 간결하게 작성하려고 노력했으며 이해가 되지 않는 내용에 대해 사과드립니다. 내 유일한 질문은: 다른 줄에서 grep 결과를 어떻게 얻을 수 있습니까?
답변1
아마도 브라우저는 사용자가 가리키는 모든 파일을 HTML로 해석할 것입니다. HTML에서 개행 문자는 \n
태그가 아니므 <br>
로 추가해야 합니다. 예를 들어:
#!/usr/bin/env bash
. ~/bin/getvars
if [ ! -z "$LN" ]; then
grep "$LN" attendance | sed 's/$/<br>/'
elif [ ! -z "$DATE" ]; then
grep "$DATE" attendance | sed 's/$/<br>/'
else
echo No Records Found
fi
내 Debian에서 \n
파일에 확장자가 없으면 .html
(확장자 없이 시도했지만 .txt
) Firefox는 이를 개행 문자로 해석하므로 이것이 해결 방법이 될 수 있지만 이식성이 얼마나 되는지는 모르겠습니다.
<pre>
더 나은 옵션은 태그를 사용하고 <
모든 및 >
해당 HTML 항목을 대체하여 적절한 HTML 페이지를 만드는 것입니다 .
#!/usr/bin/env bash
. ~/bin/getvars
echo "<HTML><BODY><pre>"
if [ ! -z "$LN" ]; then
grep "$LN" attendance | sed 's/>/\>/g;s/</\</g;'
elif [ ! -z "$DATE" ]; then
grep "$DATE" attendance | sed 's/>/\>/g;s/</\</g;'
else
echo No Records Found
fi
echo "</pre></BODY></HTML>