簡體   English   中英

grep in bash with regex

[英]Grep in bash with regex

我從bash腳本獲得以下輸出:

INFOPLIST_FILE = MajorDomo/MajorDomo-Info.plist

我想使用grep只獲取路徑(MajorDomo / MajorDomo-Info.plist)。 換句話說,等於符號后的所有內容。 有關如何做到這一點的任何想法?

不完全是你問的問題,但是

echo "INFOPLIST_FILE = MajorDomo/MajorDomo-Info.plist" | sed 's/.*= \(.*\)$/\1/'

會做你想做的。

這項工作更適合awk:

s='INFOPLIST_FILE = MajorDomo/MajorDomo-Info.plist'
awk -F' *= *' '{print $2}' <<< "$s"
MajorDomo/MajorDomo-Info.plist

如果你真的想要grep那么使用grep -P

grep -oP ' = \K.+' <<< "$s"
MajorDomo/MajorDomo-Info.plist

你也可以使用cut

your_script | cut -d = -f 2-

(其中your_script作用相當於echo INFOPLIST_FILE = MajorDomo/MajorDomo-Info.plist

如果你需要在開始時修剪空間:

your_script | cut -d = -f 2- | cut -d ' ' -f 2-

如果你在開頭有多個空格而你想要修剪它們 ,你將不得不回到sed: your_script | cut -d = -f 2- | sed 's/^ *//' your_script | cut -d = -f 2- | sed 's/^ *//' your_script | cut -d = -f 2- | sed 's/^ *//' (或者,更簡單, your_script | sed 's/^[^=]*= *//'

假設您的腳本輸出一行,則只有一個shell解決方案:

line="$(your_script)"
echo "${line#*= }"

巴什

IFS=' =' read -r _ x <<<"INFOPLIST_FILE = MajorDomo/MajorDomo-Info.plist"
printf "%s\n" "$x"
MajorDomo/MajorDomo-Info.plist

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM