정규표현식에서 $가 먹히질 않아요~
글쓴이: coolpac7 / 작성시간: 목, 2007/02/22 - 1:16오후
$ sed '/Steve/s/$/***/' datebook
***ve Blenheim:238-923-7366:95 Latham Lane, Easton, PA
이렇게 나오는데요
원래 의도한 바는 Steve가 들어간 행을 검사해서 행의 끝에 ***을 추가하는 것입니다.
sed 뿐 아니라 grep에서도 행끝을 나타내는 $기호가 먹히질 않습니다.
vi에서 명령에 넣어주면 잘 되는데...
혹시 배포판과 관계가 있는건지요? 전 페도라6 사용합니다.
Forums:
참 이상하네요
저도 그렇습니다.
Fedora고요..
부랴부랴~~~
부랴부랴~~~
저게 무슨 규칙일까
저게 무슨 규칙일까 한참 생각했었는데,
vi 에서 된다는 것에서 늦게나마 알아차렸습니다.
정규식은
s/패턴/타겟/[옵션]
으로 구성됩니다.
여기 앞에 vim 의 찾기 명령인
/문자열
이 붙은거군요.
근데 전 vim 에서도 저런식으로 해도 되지 않습니다.
꽤 편리해 보이는데 문법을 알려주시면 고맙겠습니다.
emerge money
![](http://www.gentoo.org/images/gtop-www.jpg)
https://xenosi.de/
글쎄요.. 저는
글쎄요.. 저는 보여주신대로 해도 잘되는군요.
다른 방법을 쓰시면 어떨까요.
보여주신 예는 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}
송효진님/ vim에서는
송효진님/
vim에서는 저도 안됩니다. 제 글에서 vi에서는 잘된다란 말은
행끝문자가 잘 먹힌다는 의미로 쓴 말이지 제가 예를 들어 써 놓은
sed 명령문 뒤에 붙은 정규표현식을 vi에서 써도 잘 된다는 말은 아니었습니다.
jg님/
물론 awk로 하면 되겠지만... 행끝문자가 안먹히는게 이상해서요
그리고 써 주신 명령어 중에 위에 문장은 steve를 steve***로 바꾸는거 아닌가요?
그리고 써 주신
그리고 써 주신 명령어 중에 위에 문장은 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 에서 해보니
sed 에서 해보니 되는군요.
혹시 " 와 ' 의 차이인지 /mg 를 넣어주면 되는건지,
-e 옵션으로 하면 되는건지 등등 해보시면 될것 같네요.
emerge money
![](http://www.gentoo.org/images/gtop-www.jpg)
https://xenosi.de/
jg님이 써주신
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문 써서 같은 일을 하는 스크립트를 만들 수 있지만..
참 이상하네요 ㅜㅠ
이해가 되질 않네요
사용하고 있는 쉘 문제는 아닐런지..
만일 다음과 같이 했을 경우 제대로 동작하면 쉘 문제가 맞고..
아니면 프로그램 자체(sed나 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}
jg님께서 써주신
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.
입니다.
프로그램 버전은
프로그램 버전은 제가 쓰고 있는 우분투의 그것들과 동일합니다.
쉘문제도 아닌 듯 싶고.. 제 이해의 범위를 벗어났습니다.
죄송합니다. 대신 해결해 드릴 여건이 안되네요.
$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}
이유는 알수 없지만.
이유는 알수 없지만. 혹시나 $가 어떻게 해석되는지 알기위해
를 해보면 어떨까요
이상하게 그건
이상하게 그건 정확한 결과가 나오네요 @.@;;
첫번째는 175
두번째는 175$
그렇다면 인풋으로
그렇다면 인풋으로 쓰신 텍스트 파일에 문제가 있는 것아닐까요?
원 파일을 압축해서 올려보시면 테스트해볼께요
해결되셨는지
해결되셨는지 궁금하네요
댓글 달기