쉘 스크립트 잘 하시는 고수님들 부탁~ 이것땜에 하루동안 내내.

hyangil의 이미지

텍스트 파일이 있습니다

1,원하는 라인의 일정 문자를 다른 문자로 바꾸고

2, 파일에 저장할려면 어떻게 해야 할까요?

awk 나 sed 를 사용하면 될듯한데...

^^; 너무 어렵습니다..

부탁드립니다.

advanced의 이미지

너무 포괄적이군요

그 질문에 답하려면 책을 써야 할듯

아래 의 하우투와 튜토리얼에 그 해답이..

http://doc.kldp.org/wiki.php/DocbookSgml/Bash-Prog-Intro-HOWTO
http://doc.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/
http://www.delorie.com/gnu/docs/gawk/gawk_toc.html

impactbar의 이미지

기본적인 awk, sed 경우 파일의 직접 조작은 못하고

표준출력을 다른이름의 파일로 저장후 기존파일을 제거 하고

기존 파일명으로 rename하는 것입니다.

만약 바로 바꾸고 싶다면 펄이나 파이선 같은 스크립트어를 쓰세요.

참고로 펄은 awk, sed 가 불편해서 나온 언어입니다.

santana의 이미지

Advanced wrote:
너무 포괄적이군요

그 질문에 답하려면 책을 써야 할듯

그다지 포괄적인 질문이라 생각하지도 않고 질문에 답하려면 책을 쓸 정도의 질문이라고 생각하지도 않습니다.

저 정도의 질문을 가지고 상기와 같이 답변하시면 KLDP에 질문 올리기가 무서워 질 정도입니다.

hyangil wrote:

awk 나 sed 를 사용하면 될듯한데...

^^; 너무 어렵습니다..

부탁드립니다.

awk도 필요없고 sed도 필요가 없습니다.

단지 vim 만 사용하실 줄 알면 되십니다.

hyangil wrote:

1,원하는 라인의 일정 문자를 다른 문자로 바꾸고

2, 파일에 저장할려면 어떻게 해야 할까요?

1,원하는 라인의 일정 문자를 다른 문자로 바꾸고
==> 1,1s/etc/111 (1번줄의 etc 를 111로 바꾼다)

2, 파일에 저장할려면 어떻게 해야 할까요?
-c wq

1번과 2번을 조합해 보면 아래와 같습니다.

vi -c " set aw | bufdo 1,1s/etc/111" -c wq ./test.txt

vi의 -c Option은 Command에서 사용하겠다는 뜻이고
set aw는 autowirte의 약자입니다.

더 궁금하신 점은 :help -c 와 :help autowrite를 참조하시면 됩니다.

제발 좀 긍정적인 마음가짐으로...

impactbar의 이미지

find ./a -type f -exec perl -pi -e 's/bbb/ccc/g' {} \;

파인드와 펄의 조합입니다.

하위디렉토리 까지 뒤져가며 모든파일에서 원하는 내용을 치환합니다.

무한포옹의 이미지

원하는 라인에서

바꾼다는 게 find 와 perl 의 한줄 스크립으로는 역부족인듯.

-------------------------------
== warning 대부분 틀린 얘기입니다 warning ===

purple의 이미지

원하는 줄을 찾는 건 awk의 FNR 내장 변수를 이용하고,
문자열을 바꾸는 것은 gsub 함수를 사용하면 되죠.
합치면,

awk '{ if (줄번호 == FNR) { gsub("찾을문자열","바꿀문자열"); print; } else print; }' filename

정도면 되겠네요.

표준 출력으로 결과가 나오니까 적당히 redirect 해야 할 꺼구요.

impactbar의 이미지

역부족 답변이 있어 보강하여 올립니다.

find ./test.txt -type f -exec perl -pi -e 's/0000/zzz/g if 3 .. 3 ' {} \;

위 한줄 명령은 test.txt 라는 파일에서

3번째 줄에서

0000 을

zzz 로 치환하는 명령입니다.

./test.txt 부분을 . 로 바꾸면 하위디렉토리를 포함해서 모든 파일에 적용되며

if 3 .. 3 부분은 명령이 적용될 부분의 시작줄과 끝줄을 나타냅니다.

if 3 .. 10 으로 수정하면 3번째 줄부터 10번 줄까지 적용됩니다.

즐거운 하루 되십시오.

댓글 달기

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