Shell

將返回的文本塊拆分為終端中的行?

  • September 22, 2017

當我發出echo $PATHor之類的命令時which program,我經常會得到一大塊由多個目錄組成的文本。這是相當沒用的,例如,如果我想看看它們之間是否存在一條特定的路徑。

有沒有辦法將它們分開,以便每個條目都從新行開始?

輸出不包括換行符,但我可以看到:我可以使用適當的分隔符。

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

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

使用csh,tcshzsh,$PATH映射到$path數組,您可以使用以下命令每行列印一個元素:

printf '%s\n' $path

僅使用 zsh:

print -rl $path

(這裡假設的組件$PATH不以開頭-且不為空,print -rl -- "$path[@]"否則使用)。

使用類似 Bourne 的 shell,假設路徑不包含萬用字元(如果有,請添加set -f;before printf):

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

添加一些|grep something來搜尋特定的字元串。

如果要在 的值中搜尋$pathzsh可以執行以下操作:

vared path

然後像往常一樣使用Ctrl+S,Ctrl+R向後搜尋(或vi ?//如果您使用vi模式,則使用等效項)。

引用自:https://unix.stackexchange.com/questions/131094