반환된 텍스트 블록을 터미널의 줄로 분할하시겠습니까?

반환된 텍스트 블록을 터미널의 줄로 분할하시겠습니까?

echo $PATH또는 같은 명령을 실행할 때 which program가능한 디렉터리로 구성된 매우 큰 텍스트 블록을 받는 경우가 많습니다. 예를 들어 특정 경로가 있는지 확인하려는 경우 이는 상당히 쓸모가 없습니다.

각 항목이 새 줄에서 시작되도록 구분하는 방법이 있습니까?

출력에는 개행 문자가 포함되지 않지만 :사용할 수 있는 것과 같은 적절한 구분 기호가 있음을 알 수 있습니다.

답변1

> echo foo:bar:baz | tr : '\n'
foo
bar
baz

> text=foo:bar:baz
> echo -e "${text//:/\n}"
foo
bar
baz

답변2

배열 에 매핑된 csh, tcsh또는 를 zsh사용 하면 다음을 사용하여 한 줄에 해당 요소를 인쇄할 수 있습니다.$PATH$path

printf '%s\n' $path

그냥 zsh를 사용하세요:

print -rl $path

(이것은 구성요소가 $PATH다음으로 시작하지 않고 -비어 있지 않다고 가정합니다. print -rl -- "$path[@]"그렇지 않으면 사용됩니다.)

Bourne과 유사한 쉘의 경우 경로에 와일드카드가 포함되어 있지 않다고 가정합니다(포함된 경우 set -f;앞에 추가 printf).

(IFS=:; printf '%s\n' $PATH)

|grep something특정 문자열을 검색하려면 일부를 추가하세요 .

$path값을 검색하려면 zsh다음을 수행할 수 있습니다.

vared path

그런 다음 평소와 같이 를 Ctrl+S사용 하여 앞으로 및 뒤로 검색하십시오(또는 Ctrl+R패턴을 사용하는 경우 vi ?/ 해당 항목 )./vi

답변3

GNU를 통해 sed,

echo $PATH | sed 's/:/\n/g'

예:

$ echo $PATH | sed 's/:/\n/g'
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games

관련 정보