[완료] shell script를 써서 text file 조작하기 질문 입니다..

hyper9의 이미지

언제 날잡고 꾸준히 앉아서,,공부를 해야지 ,,맨날 질문만 하지 말고 ~
하면서도 ,,공부는 못하고 자꾸 질문을 하고 있습니다 ㅜㅜ

오늘 질문을 하고 싶은 내용은요 ~
text file안에서 임의의 문자열을 바꾸고 싶을 때 어떻게 하는가...
하는 문제인데요..

예를 들면,,

aa xcvb kdap ajli qhjkk
asdk lkop kjann ccc klasd
opa kahy ccc ladap poqwe lk
casd kjiao lpo

와 같은 file에서 두번째, 세번째 줄에 있는 "ccc" 를 "bb2"로
바꾸고 싶을 때 어떻게 할지 ~ 하는 건데요..

조언 부탁드립니다. ^^

sunkens의 이미지

sed 를 쓰세요
사용법은 man 으로...

hyper9의 이미지


sed 's/ccc/bb2/' textfile
이렇게 하니까,,,위에 textfile이 원하는 대로
잘 변경이 되었거든요..

한가지 더 질문할 내용이 생긴것은요 ^^
이렇게 textfile의 내용이 수정되어 출력된 것 까지는 좋은데,
이내용을 다시 textfile에 저장하고 싶은데요.

sed 's/ccc/bb2/' textfile > textfile
이렇게 하니까,,안 되네요

다시 조언 부탁드리고 싶습니다 ^^

vamf12의 이미지

흠냐~
sed 's/ccc/bb2/' textfile > textfile
이렇게 하시니까 textfile이 빈파일이 되어 버리지요? ㅎㅎ

이거 일종의 동기화 문제라 해야 하나.. -_- 입출력 재지향을 지정할 경우 해당 파일을 먼저 열고 프로그램을 실행 시킵니다.
1. textfile을 출력용으로 연다 (덮어 쓰기로 열였기 때문에, 열면서 빈파일로 맹글어 버립니다.)
2. textfile의 파일 기술자 복사를 통해서 표준출력으로 맞춘다
3. fork/exec를 통해서 sed를 실행한다.

해결책은? 수동으로 임시 파일 생성하시는 수 밖에 ㅎㅎ

sed 's/ccc/bb2/' textfile > textfile.tmp
mv textfile.tmp textfile
hyper9의 이미지

감사합니다 ~

vamf12의 이미지

저런 형태의 포맷이면 배쉬셀만으로 가능하긴 하지만... -_-

그냥 sed나 perl 을 사용하심이 좋을듯합니다.

sunkens의 이미지

sed 에서 -i 옵션주면 엎어쓰기 됩니다..
버젼이 뭐였는지 모르것지만 함 확인해보세요 간단히 될수도 있습니다.

hyper9의 이미지

덕분에 많은 정보를 얻었습니다.^^

댓글 달기

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