cut+sed 기능 추가

cut+sed 기능 추가

입력하다

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")./"

그리고.dirnamexargs

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./

관련 정보