텍스트 검색 및 대치 스크립트

wagnerian의 이미지

FreeBSD, C 셸에서
모든 html 파일을 읽어들여(서브디렉토리까지 뒤지면 더 좋음)
wagnerian.system-halt.com
요놈을
wagnerian.new21.org
요렇게
바꾸려고 하거든요.
별것 아닌 것 같으면서도 제가 어설프게 배워서
잘 안 되네요.

그러니까, vi 에디터에서
:1,$ s/system-halt.com/new21.org/g
이렇게 하면 되더란 말이죠.
이걸 여러 파일을 한꺼번에 고치고 싶어요.

#! /bin/csh
foreach html ( $argv )
tr 'system-halt.com' 'new21.org' < $html > $html.1
end

왜 안 될까요? ㅠ.ㅠ
tr이 아니라 sed인가... ㅡㅡ;
유닉스 책 봐도 아리까리, man 명령어 쓰니 더 모르겠고.. ㅠ.ㅠ
누가 좀 도와주실래요?

Prentice의 이미지

#!/bin/csh
foreach html ( $argv )
sed 's/system-halt.com/new21.org/' < $html > $html.1
end

wagnerian의 이미지

.org/g' 요렇게 바뀌어야 맞는 거죠? 그런데 이렇게 해도 안 되네요.
프롬프트에서 sed 구문만 쓰면 되는데 스크립트로는 안 됩니다.
이걸 bourne 셸 스크립트로 고치면 어떻게 될까요?

Prentice의 이미지

저는 그대로도 잘 되던데요.

bash 환경에서 ./temp.sh a.htm b.htm && cat a.htm a.htm.1 b.htm b.htm.1로 잘 되는 것을 확인하고 올린 글이였습니다. csh는 tcsh였습니다. 다시 해보니 tcsh 환경에서도 잘 되네요.

사용환경:
데비안 최신 bash, tcsh, sed
시그윈 최신 bash, tcsh, sed

hokim의 이미지

sed 's/<search>/<replace>/' 에서 <search>의 도트(.)는 아무거나 한문자 매칭때문에 '\.'이렇게 이스케이프 시켜야 하지 않나요?

익명 사용자의 이미지

bourne 셸에서 실행하면 이렇게 됩니다:

/wecan2/wagnerian/bin/renhtm: line 2: syntax error near unexpected token `('
/wecan2/wagnerian/bin/renhtm: line 2: `foreach html ( $argv )'

그리고 도트를 고쳐도 소용이 없네요. ㅠ.ㅠ

Prentice의 이미지

/bin/csh는 존재하고 있는 것이 맞나요?

sh renhtm로 실행하셨다면 그냥 renhtm을 실행은 해보셨나요?

정확히 어떻게 실행하셨는지 자세한 정보를 제공해주시기 바랍니다.

좋은 답을 바라시면 자세한 질문을 해주셔야 도움 드릴 수 있습니다.

http://wiki.kldp.org/wiki.php/%C3%CA%BA%B8%C0%DA%C4%DA%B3%CA#s-2

---

스크립트 실행이 안되는데 sed의 도트는 당연히 소용이 없죠. (필요 없다는 얘기는 아닙니다.)

Prentice의 이미지

#!/bin/bash

for I in "$@"
	do sed 's/system-halt\.com/new21.org/' < "$I" > "$I.1"
done

csh를 bash로 전환한 소스입니다. 하부 디렉터리 처리는 스스로 방법을 찾아보세요.

wagnerian의 이미지

윈도우즈용으로 포팅된 sed를 받아서 윈도우즈 배치파일로 해결했습니다. ㅡ,.ㅡ 도와주신 분들께 감사드립니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.