sed에서 괄호로 된 문자열을 제거하려고 하는데요..

lowid의 이미지

sed를 사용하여 현재 디렉토리에 있는 파일이름중에서 괄호(소괄호, 중괄호, 대괄호)를 제거하려고 합니다

일단 소괄호, 중괄호 먼저 하려고...

ls | sed -e 's/\[.*\]//g'

이렇게 하니깐 '[' , ']' 들은 일단 잘 지워지는것 같아서 만족했습니다.

그리고 이제 '(' , ')'를 제거하려고 다름과 같이 사용했죠.

ls | sed -e 's/\(.*\)//g' 

1. 그런데 왠일? 괄호를 이스케이프해야 된다고(묶어주면 안되니까) 생각해서 저렇게 사용했는데

글자들이 다 지워져서 보이더라고요.

문제는 위에서 이스케이프를 없애주면 제대로 괄호가 지워져서 정상적으로 잘 나오는것 같이 보이는데.

왜 이스케이프를 써주면 안되는 걸까요?

2. 1번에 끝에 나와있듯이 저 정규식이 이스케이프를 안해도 문제가 발생한다는건데...

왜냐하면 욕심많은? 탐욕적인? (책 번역이 이래서.. 마땅히 대체할 용어가 좀 그렇네요) 정량자(?) '*' 때문인데.

그래서 게으른(lazy)한 정량자인 *?를 사용해서 정규식을 작성하려고

ls | sed -e 's/\(.*?\)//g' 

하면 아예 정규식이 작동안하더군요 (원래 파일이름 이 나오는...) sed에선 아예 "*?"은 지원을 안하는건가요?

아니면 이것을 대체할만한게 무엇이 있을까요?

궁금합니다...

ps; 아 작성하면서 생각났는데... 문자가 1개일경우에는 그냥 검색하는것과 같지 않나요

's/a/b/g' 랑 's/[a]/b/g'와 같은거 맞죠? '[', ']' 는 괄호안에있는건 OR연산이니까 1개만 있으면.. 같다고 볼수 있는 그런...

... 자기전에 작성한거라 지금보니깐 참 질문이 산만하네요 ㅜ

cinsk의 이미지

일단, 질문이.. 좀 이상하네요.

괄호 문자를 지우는 것이 목적인가요, 아니면 괄호 문자 포함, 둘러싸인 내용까지 지우는 것이 목적인가요?

그리고 "\( ... \)"는 regular expression에서 group을 만드는 용도로 씁니다. "(", ")" 등의 문자를 나타내려면 그냥 "(", ")"를 쓰면 됩니다.

단순히 parenthese인 '(', ')'와, bracket인 '[', ']'를 제거하고 싶다면:

$ ... | sed -e 's/[][()//g'

를 쓰세요.

sed에서 쓰이는 regular expression에 대한 것은

$ info sed reg

를 보면 잘 나와 있습니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

lowid의 이미지

괄호와 괄호안의 모든 문자를 지우려고 했었어요.

---------------------------------------------
아치리눅스좀 써주세요
-> 아치리눅스 유저 좀 꼬셔오세요. 1인당 10명!

cinsk의 이미지

$ echo 'q(w)e[r]t' | sed -e 's/([^)]*)//g
> s/\[[^]]*\]//g'
qet
$ _

--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/

댓글 달기

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