我正在嘗試從 nodetool 命令的輸出中將 cassandra 模式版本轉換為變數。
以下是 nodetool 命令的一些輸出:
Cluster Information:
Name: Test Cluster
Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Schema versions:
65e78f0e-e81e-30d8-a631-a65dff93bf82: [127.0.0.1]
當幾個節點無法到達時,這里是輸出。
Cluster Information:
Name: Production Cluster
Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
Schema versions:
UNREACHABLE: 1176b7ac-8993-395d-85fd-41b89ef49fbb: [10.202.205.203]
任何人都可以建議如何將模式版本轉換為變數,而不管是否可達?
嘗試使用 awk 和 grep 命令,但由于無法訪問而無法正常作業。
uj5u.com熱心網友回復:
awk可以撰寫僅匹配 UUID 型別 REGEX的腳本的另一個版本,以使用match()設定內部RSTART和RLENGTH變數,然后可以與substr().
那將是:
awk '
/Schema versions:/ {
set=1
next
}
set {
match($0,/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/)
print substr($0, RSTART, RLENGTH)
exit
}' file
示例使用/輸出
$ awk '
> /Schema versions:/ {
> set=1
> next
> }
> set {
> match($0,/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/)
> print substr($0, RSTART, RLENGTH)
> exit
> }' << 'eof'
> Cluster Information:
> Name: Test Cluster
> Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
> Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
> Schema versions:
> 65e78f0e-e81e-30d8-a631-a65dff93bf82: [127.0.0.1]
>
> eof
65e78f0e-e81e-30d8-a631-a65dff93bf82
和
$ awk '
> /Schema versions:/ {
> set=1
> next
> }
> set {
> match($0,/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/)
> print substr($0, RSTART, RLENGTH)
> exit
> }' << 'eof'
> Cluster Information:
> Name: Production Cluster
> Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
> Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
> Schema versions:
> UNREACHABLE: 1176b7ac-8993-395d-85fd-41b89ef49fbb: [10.202.205.203]
> eof
1176b7ac-8993-395d-85fd-41b89ef49fbb
您可以在 bash 中的命令替換中使用該命令來將結果捕獲到變數中。
如果您還有其他問題,請告訴我。
uj5u.com熱心網友回復:
使用 GNUsed
$ var=$(nodetool command | sed -En '/schema versions:/I{n;s/[^0-9]*([^:]*).*/\1/p}')
$ echo "$var"
65e78f0e-e81e-30d8-a631-a65dff93bf82
1176b7ac-8993-395d-85fd-41b89ef49fbb
uj5u.com熱心網友回復:
awk 將為此完成作業:
version=$(awk '/Schema versions:/ {
getline
gsub(/:/,"")
if ($1 == "UNREACHABLE:") {
print $2
} else {
print $1
}
}' < <(nodetool_cmd)) # remplace "nodetool_cmd" by the correct command
$ echo "$version" #when reachable
65e78f0e-e81e-30d8-a631-a65dff93bf82
$ echo "$version" # when unreachable
1176b7ac-8993-395d-85fd-41b89ef49fbb
# or in single line:
version=$(awk '/version/ {getline;gsub(/:/,"");if ($1 == "UNREACHABLE") {print $2} else {print $1}}' < <(nodetool_cmd))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/528121.html
標籤:重击壳
