[완료]"aaaa/bbbb/cccc/dddd"에서 "/"기준으로 끝을 제거하는 방법 좀 알려주세요.

Leo Park의 이미지

안녕하세요.
날씨가 많이 따뜻해졌습니다~
더위를 좋아하는 저는 얼른 더 더워졌으면...^^**

현재 csh을 이용해서 스크립트를 작성중인데요.

"aaaa/bbbb/cccc/dddd"에서 /를 기준으로 맨 끝의 값만 제거하고 싶습니다. 즉 "aaaa/bbbb/cccc"
awk를 이용해서 할려고 해 보았는데....맨 끝을 가져오는걸 어찌 해야하는지 모르겠습니다.
"aaaa/bbbb/cccc/dddd"가 경우에 따라서 갯수가 변하는게 문제입니다.
"aaaa"인 경우는 그냥 ""를,
"aaaa/bbbb"인 경우는 "aaaa"를,
"aaaa/bbbb/cccc"인 경우는 "aaaa/bbbb"를 추출하고 싶습니다.

echo "aaaa/bbbb/cccc/dddd" | awk -F"/" '{print $1,$2,$n-1}'

그냥 쉘로 해결해도 좋구, awk나 sed 혹은 다른 방법으로라도 해결할수 있는 방법 있으면 부탁드립니다.
그럼, 즐거운 하루되세요~

kldphjeon의 이미지

파일 이름에서 디렉토리 부분을 제거하고 파일명만 보여주는 명령어인데..

각각 구분자가 '/'로 되어있으니..

효과가 있을 듯 합니다.

다만, aaaa/bbbb 와 aaaa/bbbb/ 에 대해서 bbbb 로 같은 결과를 냅니다.

아르아의 이미지

Python으로는 다음같이 하면 됩니다.

foo = "aaaa/bbbb/cccc" 
foo = foo[::-1]
foo = foo[foo.find('/'):][::-1] # foo = "aaaa/bbbb/"
print foo[:-1]

suapapa의 이미지

다른 해법 두가지

>>> foo = "aaaa/bbbb/cccc"
>>> '/'.join(foo.split('/')[:-1])
'aaaa/bbbb'

>>> import os
>>> os.path.dirname(foo)
'aaaa/bbbb'
Fe.head의 이미지

echo "aaaa/bbbb/cccc/dddd" | sed 's/\/d\+$//'

코드 설명하면.

sed 's/\/d\+$//'
s/문장1/문장2/  --> 문장1을 문장2로 바꿔라.
 
\/  --> /
d          --> 문자 d
\+         --> 앞에 있는 글자 1개이상  : 즉 d 문자 1개이상.
$          --> 문장의 끝    :  즉 여기서 "aaaa/bbbb/cccc/dddd" 에서 마지막 d글자 다음.
 
 
sed 's/\/d\+$//
해석하면.
 
바꿔라 '/'부터 시작해서 문장의 끝까지(d 글자 1개이상)문자를 없애라(NULL로 바꿔라)

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

pcharley의 이미지

echo aaaaa/bbbbbb/cccccc/dddddd | perl -ne 'print "$`\n" if /(\/[^\/]+$)/'

Leo Park의 이미지

kldphjeon님, 김지훈님, Fe.head님, pcharley님~
답변 감사드립니다.
제가 질문을 중간에 수정해서...죄송합니다.
그래도 모두 저에게 많은 도움이 되는 내용들이라 감사드립니다.

아무래도 이번에는 pcharley님 알려주신 perl을 이용할 것 같습니다.
다시한번 답변주신 분들에게 감사드립니다.
즐거운 하루들 되세요~

■■■■■■■
http://leo.cbnu.ac.kr/
Dream as if you'll live forever, live as if you'll die tomorrow.

■■■■■■■
http://leo.cbnu.ac.kr/
Dream as if you'll live forever, live as if you'll die tomorrow.

aero의 이미지

sed 버젼

echo aaaa/bbbb/cccc/dddd | sed 's/\(.*\)\/\(.*\)$/\1/'

perl one-liner 버젼

echo aaaa/bbbb/cccc/dddd | perl -pe 's|(.*)/(.*)$|$1|'

Fe.head의 이미지

d 문자가 d 문자가 아니라 임의의 문자였군요.
아래도 됩니다.

$ echo "aaaa/bbbb/cccc/dzdadsgs" |sed 's/\/[^/]\+$//'
aaaa/bbbb/cccc

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

오호라의 이미지

저에게도 이런 날이 오는군요. (ㅠㅠ.)

> basename aaaa/bbbb/cccc/dddd
> man basename

자매품

> dirname aaaa/bbbb/cccc/dddd
> man basename

Hello World.

Leo Park의 이미지

헛!!!!
지금 스크립트 만들어서 돌리는데....
perl에서 변수명이 부정이라고 에러가 납니다...-_-;;

--------------------------------
set FD_NAME = `echo $D_NAME | perl -ne 'print "$`\n" if /(\/[^\/]+$)/'
--------------------------------

그냥 유닉스/리눅스상에서는 문제가 없는데....
스크립트로 만들어서 실행시키니까 문제가 됩니다.
위에서 알려주신
echo aaaa/bbbb/cccc/dddd | sed 's/\(.*\)\/\(.*\)$/\1/'
등의 sed로 하려고 하였는데...

echo aaaa | sed 's/\(.*\)\/\(.*\)$/\1/'
이런 경우는 null나왔으면 하는데 "aaaa"가 나옵니다.
그렇게 되면 "aaaa"와 "aaaa/bbbb"가 같은 값이 되므로 문제가 되어서요...

죄송하지만 sed나 awk로 하는 다른 방법 없을까요?
그냥 쉘 명령어로 하는 방법도 괜찮습니다.

그럼, 즐거운 저녁시간되세요.

■■■■■■■
http://leo.cbnu.ac.kr/
Dream as if you'll live forever, live as if you'll die tomorrow.

■■■■■■■
http://leo.cbnu.ac.kr/
Dream as if you'll live forever, live as if you'll die tomorrow.

Leo Park의 이미지

아~
sed를 이용해서 해결하였습니다.

입력되는 문장(Path)의 앞에 "/"를 추가해서 해결했습니다.
도움 주신분들 다시한번 감사드립니다..^^**

■■■■■■■
http://leo.cbnu.ac.kr/
Dream as if you'll live forever, live as if you'll die tomorrow.

■■■■■■■
http://leo.cbnu.ac.kr/
Dream as if you'll live forever, live as if you'll die tomorrow.

glayneon의 이미지

$ a='aaaa/bbbb/cccc/dddd'
$ b=${a$/*}
$ echo $b

basename, dirname 을 쓰는게 가장 쉽네요^^;

atie의 이미지

아까보니 awk의 $NF 쓰는 답변이 있었는데 그 사이 질문이 바뀌었군요.
----
I paint objects as I think them, not as I see them.
atie's minipage

----
I paint objects as I think them, not as I see them.
atie's minipage

댓글 달기

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