簡體   English   中英

如何在 bash 中的某些字符之間獲取 2 個字符串

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

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