bash - bash中数组的单独元素
问题描述
我有一个数组,在附加的屏幕上。
我需要从这个数组中获取所有第三个组件。
示例(我现有的数组):
array1 =
["SRV WW ZSTG HSM BlackDuck RW", "SRV WW ZSDB M204 BlackDuck RW", etc]
结果应该是:
array2 = ["HSM", "M204"]
- 我需要从数组中删除所有空元素
我现在可以使用它的代码:
FILE="$1"
index=0
while read name; do
get_group_names_from_file[$index]="$name"
index=$(($index+1))
done < "${FILE}"
get_group_names_from_file=("${get_group_names_from_file[@]:3}")
for ((a=0; a < ${#get_group_names_from_file[*]}; a++))
do
echo "${get_group_names_from_file[$a]}"
done
解决方案
我已经ARRAY1
这样设置了(不需要 a,
来分隔数组中的值):
ARRAY1=("SRV WW ZSTG HSM BlackDuck RW" "SRV WW ZSDB M204 BlackDuck RW")
并以这种方式提取数组值的第三个组成部分:
for (( i=0 ; i<$(echo ${#ARRAY1[*]}) ; i++ )) ; do ARRAY2+=($(echo ${ARRAY1[$i]} | cut -d ' ' -f3)); done
(如果您想拥有第四个组件,请cut -d ' ' -f4
改用)
检查ARRAY2
via的值printf '%s\n' "${ARRAY2[@]}"
~$ ARRAY1=("SRV WW ZSTG HSM BlackDuck RW" "SRV WW ZSDB M204 BlackDuck RW")
~$ ARRAY2=() ; for (( i=0 ; i<$(echo ${#ARRAY1[*]}) ; i++ )) ; do ARRAY2+=($(echo ${ARRAY1[$i]} | cut -d ' ' -f3)); done
~$ printf '%s\n' "${ARRAY2[@]}"
~$ ZSTG
~$ ZSDB
推荐阅读
- c# - 我需要获取列表框选定项 wpf 的属性
- c - C - 不同文件中全局定义的变量,显示没有外部链接的外部链接
- python - 使用代理请求时出现 AttributeError
- stata - Converting day and month variables into Numerical values (Stata)
- spring-boot - 如何在前端访问安全的 API?
- python - C# CNTK 如何替换/重塑输入层
- flutter - 在登录和仪表板屏幕之间导航的正确方法?
- encoding - Icecast 介绍 mp3 文件
- javascript - javascript中的多维数组数据形成问题
- javascript - 受控 Fluent UI Checkbox 组件的渲染不正确