[英]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.