입력하다
dir/foo
산출
dir./
그래서 나는 다음이 필요합니다:
echo 'dir/foo' | MAGIC
묻다:무엇인가요 MAGIC
? ( cut
+ sed
조인과 유사 :D)
답변1
여기에는 몇 가지 옵션이 있습니다. 내가 선호하는 것은 매개변수 확장입니다.
foo=dir/foo
echo "${foo%/*}./"
또 다른 옵션은 awk입니다.
echo "dir/foo" | awk -F/ '{ print $1"./" }'
답변2
또 다른 용도는read
IFS=/ read a b <<<"dir/foo"
echo "$a./"
"dir/foo"가 실제로 "/home/user/foo"인 경우에는 작동하지 않습니다.
답변3
당신은 또한 dirname
사용할 수 있습니다read
read foo
echo "$(dirname "$foo")./"
그리고.dirname
xargs
echo "$(xargs dirname)./"
기능 사용 예:
$ MAGIC() { echo "$(xargs dirname)./"; }
$ echo 'dir/foo' | MAGIC
dir./
답변4
여기서 무엇을 하고 싶은지 잘 모르겠습니다. 정말로 문자를 원하시나요 .
? 그것은 같은 느낌XY 문제.
어쨌든, 당신이 요구하는 것을 수행하는 간단한 방법은 다음을 사용하는 것입니다.dirname
:
$ echo $(dirname "dir/foo")./
dir./
주요 장점 dirname
은 공간을 처리할 수 있고 GNU coreutils의 일부이므로 모든 GNU 시스템에 설치된다는 것입니다. 또한 임의로 긴 경로를 처리할 수도 있습니다.
$ echo $(dirname "aa/bb bb/cc/foo")./
aa/bb bb/cc./
@EvanTeitelman의 트릭을 사용하여 이를 함수로 바꿀 수 있습니다.
$ MAGIC() { echo $(dirname "$1")./; }
$ MAGIC 'dir/foo'
dir./
$ MAGIC 'dir/foo bar/foo'
dir/foo bar./