簡體   English   中英

如何僅返回bash中的單個字符串?

[英]How do I return just an individual string in bash?

我有一個包含多行的文本文件,但是我知道一行中有以下內容

name="some_string" value="some_string"

我知道我可以僅通過cat file.txt|grep "value=\\".*\\""進入這一 ,但是我無法弄清楚僅僅是返回括號內的內容。 我認為grep只能解決問題

使用GNU grep-P (PCRE)選項和-o選項僅打印匹配的部分。

grep -oP '(?<=value=")[^"]+' file

如果您的正則表達式包含分組運算符,則可以使用=~BASH_REMATCH

regex='value="([^"]+)"'
[[ $string =~ $regex ]] && result=${BASH_REMATCH[1]}

這適用於沒有GNU grep的系統(如MacOS)。


與僅使用POSIX grep的系統類似的另一種方法是使用參數擴展在本地bash中過濾grep的輸出:

while read -r; do
  value=${REPLY#*'value="'}
  value=${value%'"'*}
  echo "$value"
done < <(grep -e 'name="foo"' file)

暫無
暫無

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

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