[완료]sed 문의 드립니다.
글쓴이: dcmru / 작성시간: 화, 2008/02/26 - 2:15오후
sed 를 이용해서, 파일이름을 포함한 절대경로에서 파일이름만 빼고 경로만 얻고 싶습니다.
예로 /usr/src/test.tar 에서 /usr/src 만 빼내려고 합니다.
물론 파일이름과 경로는 다양합니다. ㅡㅡㅋ
라인의 끝에서 끝에서 처음으로 만나는 / 까지만 삭제하면 되는되요. 정규표현을 어떻게 해줘야할까요?
sed -e "s/\/*$/ /g" 이런식으로 해도 안먹는군요. 이해가 부족한가봅니다.
마찮가지로 /usr/src/test.tar 에서 파일이름만 빼낼려면, 어떻게 해야할까요?
Forums:
흠
1. dirname "/local/usr/src/tmp/src.tar"
2. basename "/local/usr/src/tmp/src.tar"
-------------------------------
인생 뭐 있음!
-------------------------------
== warning 대부분 틀린 얘기입니다 warning ===
dirname
find . -type f -exec dirname {} \; 해보세요.
답변감사드립니다.
dirname, basename 이라는 명령어가 있었군요. 유용할 것 같습니다.
그런데, 두 명령어가 없는 OS환경이라면, 치환명령어를 써야할것 같습니다.
다른 방법은 없을까요?
basename 은 awk 로 구분자를 / 로 준 다음에 마지막 인자를 출력하게 하는 방법으로 해결은 되었습니다.
sed 를 이용하는 방법은 어떻게 해야할까요?
-------------------------------------------------------
노력만이 살길이다.
노력만이 살길이다.
vim이라면 (대충
vim이라면 (대충 적자면) \(첫째\)\(둘째\)를 검색해서 첫째를 \1로 출력하면 될 것 같습니다.
:%s/\(\/.*\/\)\(\).*/\1/
/local/usr/src/tmp/src.tar를 /local/usr/src/tmp/로 만들어줍니다.
답변 감사드립니다.
sed 에 답변주신 정규표현식을 적용하니 정상작동합니다.
그런데 정규표현식이 이해가 가질않네요. ^^;
사용법을 모르니 그런것 같습니다. 살펴봐야겠습니다.
-------------------------------------------------------
노력만이 살길이다.
노력만이 살길이다.
그런데 제 코드에
그런데 제 코드에 군더더기가 있네요.
이런 식으로 해도 아마 되지 않을까 생각합니다.
댓글 달기