정규표현식에서 $가 먹히질 않아요~

coolpac7의 이미지

$ sed '/Steve/s/$/***/' datebook
***ve Blenheim:238-923-7366:95 Latham Lane, Easton, PA
이렇게 나오는데요

원래 의도한 바는 Steve가 들어간 행을 검사해서 행의 끝에 ***을 추가하는 것입니다.
sed 뿐 아니라 grep에서도 행끝을 나타내는 $기호가 먹히질 않습니다.
vi에서 명령에 넣어주면 잘 되는데...
혹시 배포판과 관계가 있는건지요? 전 페도라6 사용합니다.

anabaral의 이미지

저도 그렇습니다.

Fedora고요..

부랴부랴~~~

부랴부랴~~~

송효진의 이미지

저게 무슨 규칙일까 한참 생각했었는데,
vi 에서 된다는 것에서 늦게나마 알아차렸습니다.

정규식은
s/패턴/타겟/[옵션]
으로 구성됩니다.

여기 앞에 vim 의 찾기 명령인
/문자열
이 붙은거군요.

근데 전 vim 에서도 저런식으로 해도 되지 않습니다.
꽤 편리해 보이는데 문법을 알려주시면 고맙겠습니다.

emerge money

jg의 이미지

글쎄요.. 저는 보여주신대로 해도 잘되는군요.
다른 방법을 쓰시면 어떨까요.

$ echo "Steve test" | sed 's/\(Steve.*\)$/\1***/';
$ echo "Steve test" | awk '/Steve/ { print $0"***" }'

보여주신 예는 awk 가 더 적당하다고 생각되네요. ( 그리고 조금 더 빠릅니다. )

$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}

coolpac7의 이미지

송효진님/
vim에서는 저도 안됩니다. 제 글에서 vi에서는 잘된다란 말은
행끝문자가 잘 먹힌다는 의미로 쓴 말이지 제가 예를 들어 써 놓은
sed 명령문 뒤에 붙은 정규표현식을 vi에서 써도 잘 된다는 말은 아니었습니다.

jg님/
물론 awk로 하면 되겠지만... 행끝문자가 안먹히는게 이상해서요
그리고 써 주신 명령어 중에 위에 문장은 steve를 steve***로 바꾸는거 아닌가요?

jg의 이미지

그리고 써 주신 명령어 중에 위에 문장은 steve를 steve***로 바꾸는거 아닌가요?
->
아닙니다. 프롬프트를 제외한 행을 그대로 복사해서 실행해 보시면 알 수 있을 겁니다.
아마 해보셨는데 안되서 말씀하신것 같은데
그렇다면 정말 문제있는 sed 군요.

$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}

송효진의 이미지

sed 에서 해보니 되는군요.
혹시 " 와 ' 의 차이인지 /mg 를 넣어주면 되는건지,
-e 옵션으로 하면 되는건지 등등 해보시면 될것 같네요.

emerge money

coolpac7의 이미지

jg님이 써주신 스크립트는 잘 작동하네요
제가 직접 해보지 않고 읽어만 봤다가 착각을 했습니다 ^^;;

sed나 grep같은 프로그램 문제는 아닌거 같습니다.
행끝문자 사용하는것이 awk에서도 안되거든요..

$cat donors

Mike Harrington:(510) 548-1278:250:100:175
Christian Dobbins:(408) 538-2358:155:90:201
Susan Dalsass:(206) 654-6279:250:60:50

$awk '/175$/{print $1}' donors
하면 아무것도 안나옵니다.
물론
if문 써서 같은 일을 하는 스크립트를 만들 수 있지만..
참 이상하네요 ㅜㅠ

jg의 이미지

사용하고 있는 쉘 문제는 아닐런지..
만일 다음과 같이 했을 경우 제대로 동작하면 쉘 문제가 맞고..
아니면 프로그램 자체(sed나 awk)나 시스템 문제인데..
도무지 이해가 되지 않네요.
현재 돌아가고 있는 많은 프로그램들이 같은 환경에 돌아가고
있다고 생각하면 재앙에 가깝군요.

$ cat test.awk
#!/usr/bin/awk -f
/175$/ {print $1}
 
$ awk -f test.awk donors
Mike

$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}

coolpac7의 이미지

jg님께서 써주신 그대로 해서 해봤는데요
역시 아무것도 안나오네요
제가 쓰고 있는 쉘은

GNU bash, version 3.1.17(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

이구요

awk는

GNU Awk 3.1.5
Copyright (C) 1989, 1991-2005 Free Software Foundation.

grep은

grep (GNU grep) 2.5.1
Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.

sed는

GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.

입니다.

jg의 이미지

프로그램 버전은 제가 쓰고 있는 우분투의 그것들과 동일합니다.
쉘문제도 아닌 듯 싶고.. 제 이해의 범위를 벗어났습니다.
죄송합니다. 대신 해결해 드릴 여건이 안되네요.

$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}

pung96의 이미지

이유는 알수 없지만. 혹시나 $가 어떻게 해석되는지 알기위해

printf "175\n175$\n" | grep '175$'
printf "175\n175$\n" | grep '175\$'

를 해보면 어떨까요
coolpac7의 이미지

이상하게 그건 정확한 결과가 나오네요 @.@;;
첫번째는 175
두번째는 175$

pung96의 이미지

그렇다면 인풋으로 쓰신 텍스트 파일에 문제가 있는 것아닐까요?
원 파일을 압축해서 올려보시면 테스트해볼께요

pung96의 이미지

해결되셨는지 궁금하네요

댓글 달기

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