[완료]txt 파일 내용중 특정 문자열 변경하기

2gbmk의 이미지

도움좀 부탁 드립니다.
php 파일 내용의 일부분입니다.

if(subfix.value == "chargedate"){
search.value = "2014-01-01";
search_date.value = "2014-01-31";
}

"2014-01-01";
"2014-01-31";
위 두 개의 문자를
지금은 edit로 변경하고 있습니다.
위 두개 부분을 edit 하지 않고
쉘 스크립트로 아뢰처럼 변경 하고 싶습니다

2월1일 0시에 쉘 스크립트 실행

"2014-02-01";
"2014-02-28";

3월1일 0시에 쉘 스크립트 실행

"2014-03-01";
"2014-03-31";
..
..

mirheekl의 이미지

http://stackoverflow.com/questions/5891342/modify-conf-file-with-shell-script

정확한 상황은 잘 모르겠지만 어쨌든 원본파일에 타겟이 되는 문자열을 고정해놓고 (예: "{{DATE1}}" "{{DATE2}}" - 이래야 바꾸기 할때 편하니까요) SED를 호출해주면 가능할 걸로 보입니다.

--

dontdieych의 이미지

if(subfix.value == "chargedate"){
search.value = "2014-01-01";
search_date.value = "2014-01-31";
}

search.value = 이 php 파일이 실행되는 순간에 해당하는 월의 시작 날짜
search_date.value = 이 php 파일이 실행되는 순간에 해당하는 월의 마지막 날짜

이렇게 하시려는 게 목적이신가요?

2gbmk의 이미지

네 맞습니다.

dontdieych의 이미지

http://stackoverflow.com/a/3321973

date("Y-m-01")
date("Y-m-t")

이런식으로 하라는 것 같네요. 굳이 외부 스크립트를 만들어서 편집하지 않아도 될 것 같습니다.

2gbmk의 이미지

전 edit 해야할 목적이 있어서
제 상황이랑 맞지가 않네요

답변 감사 합니다.

dontdieych의 이미지

이런식으로 가능할 것 같습니다. 상황에 맞춰 수정하십시오.

$ cat test.php
if(subfix.value == "chargedate"){
    search.value = "2014-01-01";
    search_date.value = "2014-01-31";
}

$ cat test.sh
#!/bin/sh

FIRSTDAY=$(date +%Y-%m-01)
FIRSTDAY_OF_NEXT_MONTH=$(date --date="next month" +%Y-%m-01)
LASTDAY=$(date --date="$FIRSTDAY_OF_NEXT_MONTH -1 day" +%Y-%m-%d)

sed -r -e 's/(search.value = ")[0-9]{4}-[0-9]{2}-[0-9]{2}(";)/\1'${FIRSTDAY}'\2/' \
       -e 's/(search_date.value = ")[0-9]{4}-[0-9]{2}-[0-9]{2}(";)/\1'${LASTDAY}'\2/' $1

$ ./test.sh test.php
if(subfix.value == "chargedate"){
    search.value = "2014-02-01";
    search_date.value = "2014-02-28";
}
2gbmk의 이미지

와우 답변 감사 합니다.
어떻게 보답해야 될지...

실제 shell 은 동작하지 않습니다
연구 해봐야 할꺼 같네요

dontdieych의 이미지

sed의 정규 표현식 부분이 제대로 작동 하리라 확신할 수 없어서 실제로 파일의 내용을 바꾸게 하지는 않았습니다. 정확히 원하는 부분만을 바꾸는지 확인한 후 적용 하세요. 그리고 원본 파일 백업은 해 두시고 작업하세요.

sed -r -e 's/.../' \
       -e 's/.../' $1

이 부분을,

sed -rn -e 's/.../p' \
       -e 's/.../p' $1

이렇게 바꾸시고 적용시켜 보세요. n 옵션과 s 명령 끝에 p 명령이 추가 되었습니다. 그러면 변경이 적용된 줄만 출력이 됩니다. 원하는 파일에 실행해서 정확히 두 줄만 원하는 대로 변경되서 출력되는 것을 확인 합니다. 아무런 내용도 출력되지 않거나 원하지 않는 줄도 출력이 된다면 's/.../' 부분의 정규 표현식을 수정해서 맞춰야 합니다. 제대로 동작하는 것이 확인되면 다음과 같이 바꿉니다.

sed -ri -e 's/.../' \
       -e 's/.../' $1

n 옵션을 i로 바꾸고 끝에 p를 지웁니다.

이왕 한 거 좀 더 고급스럽게 짜드리고 싶은데 제 지식으로는 좀 시간이 걸릴 것 같네요.

2gbmk의 이미지

ㅇ ㅏ ..무식한 저를 용서 하세요...
원하는 부분이
search.value = "2014-02-01";
search_date.value = "2014-02-28";

변경 되어서 출력이 됩니다.

복받으실껍니다.
너무너무 감사 합니다.

댓글 달기

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