라인마다 개행문자 추가하는 스크립트좀..

송지석의 이미지

제 리눅스 박스에서 메일로 로그를 날리게 해놨는데, 아웃룩에서 메일을 읽어보면 "필요 없는 줄바꿈이 제거되었습니다" 라면서 라인들이 붙어서 보입니다. 원상태로 돌려 볼 수 있지만 계속 그러다보니 불편해서, 매 라인마다 한줄씩 공백을 넣으면 되겠다 싶습니다.
c로 짜면 편한데 유지보수가 힘들 것 같아서 쉘 스크립트로 하고 싶은데요. sed에서 라인 끝마다 개행문자를 추가하려는데 잘 안되는군요. 일단 패턴 치환으로
sed "s/\n/\n\n/g" 해봤자 라인별로 읽어오기 때문에 치환 안되고, sed "a\\n" 해보면 a 명령은 개행문자 인식이 안되기 때문에 n이 추가됩니다.
어떻게 하면 될까요? 좋은 방법이 있으시면 좀 가르쳐주세요.

pynoos의 이미지

Outlook express 라면 Ctrl+F3을 누를 경우 소스가 보입니다.

그런 오류를 만나본적은 없지만, 소스 상에서 개행문자가 모두 동일하지 않다면, 같게 맞춰주면 될 것입니다.

OE가 똘똘하게 \n, \r\n 둘중하나로 되어 있기만하다면 인식할걸요...

niemand의 이미지

#!/usr/bin/perl

open(fileRead, "one.txt");
open(fileWrite, ">two.txt");

while($aLine = <fileRead>)
{
    $aLine =~ s/\x0a/\x0a\x0a/g; # 이건 뭐 리눅스에서 \n을 넣는 것일테구요
    print fileWrite $aLine;
}
close(fileHandle);
close(fileWrite);

가 되지 않을까 싶습니다.
그런데 윈도우에서 문제가 없게 하려면

$aLine =~ s/\x0a/\x0d\x0a/g;

이렇게 해도 되지 않을까 싶은데
겪고 계신 문제가 정확히 어떤 건지 몰라서..
feanor의 이미지

파이썬을 쓰세요 :-)

2.3부터는 Universal Newline Support라고, 어느 플랫폼에서나 어떤 개행문자도 처리할 수 있게 되었습니다. 파일을 "U" 모드로 열면 됩니다.

src = open("src.txt", "U")
dst = open("dst.txt", "w")
for line in src:
    dst.write(line)

하면 모든 개행문자가 \n으로 표준화됩니다.

--feanor

단호진의 이미지

혹시....

sed G myfile > myfile

을 원하시는 건지... 질문의 의미를 잘 모르겠습니다... :roll:

:wq

송지석의 이미지

niemand wrote:
#!/home/bin/perl

open(fileRead, "one.txt");
open(fileWrite, ">two.txt");

while($aLine = <fileRead>)
{
    $aLine =~ s/\x0a/\x0a\x0a/g; # 이건 뭐 리눅스에서 \n을 넣는 것일테구요
    print fileWrite $aLine;
}
close(fileHandle);
close(fileWrite);

가 되지 않을까 싶습니다.
그런데 윈도우에서 문제가 없게 하려면

$aLine =~ s/\x0a/\x0d\x0a/g;

이렇게 해도 되지 않을까 싶은데
겪고 계신 문제가 정확히 어떤 건지 몰라서..
첫번째 답변에 대해 -> 아웃룩 익스가 아니라 아웃룩입니다.
그리고 unix2dos로 파이프 해서 보내봤지만 마찬가지더군요.
그냥 제가 하고 싶은 건 일종의 workaround로 그냥 개행문자 \n만 추가해서 보내면 줄이 두줄씩 띄어져 보이지만 어쨌든 보기엔 편하니까 그렇게 하려구요..
그리고 제가 펄을 하나도 몰라서 ^^a stdin으로 받아서 stdout으로 뽑을 수 있을까요?
일단 지금은 sed로 sed "a\\ " 이렇게 공백문자로 추가시켰습니다. 어쨌든 저렇게 하면 공백문자 하나 있는 행이 추가되니 아웃룩에서 볼 때 빈 줄로 보이거든요.
송지석의 이미지

단호진 wrote:
혹시....

sed G myfile > myfile

을 원하시는 건지... 질문의 의미를 잘 모르겠습니다... :roll:


오, 제가 답변하는 사이에 많이 답변해주셨네요.
G라는 명령이 있었다니.! 제가 원하던 기능입니다!
g G Copy/append hold space to pattern space.
man 페이지에서 newline으로만 검색했는데 hold space라니 음..
감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.