commit 47afa44ed30640310c9211aed02a7b9c95fe8de5
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2025-02-14T14:58:38Z |
| subject | klabels can now filter key & value |
commit 47afa44ed30640310c9211aed02a7b9c95fe8de5
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2025-02-14T14:58:38Z
klabels can now filter key & value
---
bash/sources/19_k8s_funcs | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/bash/sources/19_k8s_funcs b/bash/sources/19_k8s_funcs
index e821c0d..9ac90f3 100644
--- a/bash/sources/19_k8s_funcs
+++ b/bash/sources/19_k8s_funcs
@@ -11,6 +11,8 @@ function klabels {
local max_label_length=0
local key=
local value=
+ local filter_value="$1"
+ local filter_key="$2"
while IFS= read -r line; do
if [ -z "$header" ]; then
@@ -32,20 +34,30 @@ function klabels {
max_key_length=$(( ${#key} > max_key_length ? ${#key} : max_key_length ))
done
- # Print a line separator based on the longest key length
- separator_length=$((max_key_length + trim_length))
- printf "%${separator_length}s\n" | tr ' ' "="
-
# Loop through labels and align them
for label in "${labels[@]}"; do
key="${label%%=*}"
value="${label#*=}"
+ if [ -n "$filter_key" ] && ! [[ "$key" == *$filter_key* ]] ; then
+ continue
+ fi
+
+ if [ -n "$filter_value" ] && ! [[ "$value" == *$filter_value* ]] ; then
+ continue
+ fi
+
+
# Format the label to align the '=' sign
printf -v formatted_label "%-${max_key_length}s = %s" "$key" "$value"
if [ -z "$first_line" ]; then
first_line=1
+
+ # Print a line separator based on the longest key length
+ separator_length=$((max_key_length + trim_length))
+ printf "%${separator_length}s\n" | tr ' ' "-"
+
echo "$line_text$formatted_label"
else
echo "$padding$formatted_label"