grep 결과의 형식을 지정하는 방법은 무엇입니까?

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

기본적으로 날짜, 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/>/\&gt;/g;s/</\&lt;/g;'
elif [ ! -z "$DATE" ]; then
  grep "$DATE" attendance | sed 's/>/\&gt;/g;s/</\&lt;/g;'
else 
   echo No Records Found
fi
echo "</pre></BODY></HTML>

관련 정보