[英]How to extract words between two characters in linux?
我將以下內容存儲在名為tmp.txt的文件中
user/config/jars/content-config-factory-3.2.0.0.jar
我需要將這個詞存儲到變量中-
$variable=content-config-factory
我寫了以下
while read line
do
var=$(echo $line | awk 'BEGIN{FS="\/"; OFS=" "} {print $NF}' )
var=$(echo $var | awk 'BEGIN{FS="-"; OFS=" "} {print $(1)}' )
echo $var
done < tmp.txt
這將返回結果“ content”,而不是“ content-config-factory”。
誰能告訴我如何有效地從字符串中提取兩個字符之間的單詞。
awk
解決方案就像
awk -F/ '{sub("-[^-]+$", "", $NF); print $NF}
測試
$ echo "user/config/jars/content-config-factory-3.2.0.0.jar" | awk -F/ '{sub("-[^-]+$", "", $NF); print $NF}'
content-config-factory
您也可以嘗試這種方式,以獲得預期的結果
variable=$(sed 's:.*/\(.*\)-.*:\1:' FileName)
echo $variable
輸出:
content-config-factory
您可以使用grep,
grep -oP '(?<=/)[^/]*(?=-\d+\.)' file
例:
$ var=$(echo 'user/config/jars/content-config-factory-3.2.0.0.jar' | grep -oP '(?<=/)[^/]*(?=-\d+\.)')
$ echo "$var"
content-config-factory
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.