[英]How to get 2 strings between certain characters in bash
細繩:
echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran"
我想在 | 的第一個實例之前抓住一切以及 External_SOC 和;PCRF 之間的所有內容。 如果可能,將它們存儲為 2 個不同的變量。
x=40125512
y=ALPHA3
這給了我以下信息:
sed -e 's/|.*External_SOC=\(.*\);PCRF.*/\1/'
40125512ALPHA3
編輯:根據 OP,如果是這種情況,則需要在單行創建變量 2 中完成,然后嘗試以下操作。
read -r x y <<<$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/\([^|]*\).*=\([^;]*\).*/\1 \2/')
echo "$x"
40125512
echo "$y"
ALPHA3
或根據 anubhav 先生的評論使用以下內容:
read x y < <(sed -E 's~^([^|]+)\|.*External_SOC=(.+);PCRF.*~\1 \2~' <<< "40125512|abcd32External_SOC=ALPHA3;PCRFabcran")
請您嘗試以下操作。 可以從 2 個單獨的命令中使用它來創建 2 個單獨的變量。
x=$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/\([^|]*\).*/\1/')
echo "$x"
40125512
y=$(echo "40125512|abcd32External_SOC=ALPHA3;PCRFabcran" | sed 's/.*=\([^;]*\).*/\1/')
echo "$y"
ALPHA3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.