簡體   English   中英

如何在Linux中提取兩個字符之間的單詞?

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

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