penguin/utils

my env utils

commit 47afa44ed30640310c9211aed02a7b9c95fe8de5

author斟酌 鵬兄 <tgckpg@gmail.com>
date2025-02-14T14:58:38Z
subjectklabels 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"