假設我有一列顯示2/2,我想比較在這種情況下分隔符的左側/是否與右側匹配?有沒有辦法在 bash 中實作這一點?
一種可能的方法是 using ,IFS但這需要將值存盤在變數中,然后使用IF陳述句比較它們。我正在嘗試使用oneliner命令來實作這一點。
uj5u.com熱心網友回復:
您可以使用 bash擴展運算子來提取每個部分并直接進行比較。
var='2/2'
if [[ "${var%/*}" = "${var#*/}" ]]
then echo match
else echo no match
fi
${var%/*}洗掉與通配符匹配的變數的末尾/*,因此它獲得第一個數字。${var#*/}洗掉與通配符匹配的變數的開頭*/,因此它獲得第二個數字。
uj5u.com熱心網友回復:
雖然您正在尋求bash解決方案,但如何awk選擇:
col="2/2"
echo "$col" | awk -F/ '{print $1==$2 ? "match" : "no match"}'
- 該
-F/選項將awk的欄位分隔符設定為/。 - 然后將輸入拆分
/并將 awk 變數$1分配給左側,同時$2將其分配給右側。 - 現在我們可以比較
$1和$2。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/365306.html
