【发布时间】:2014-11-15 14:29:19
【问题描述】:
我有一个文件,其中包含我通过 $1 输入的行:
X B C D E
X G H I J
X L M N
Y G
Z B
Y L
每行以 X 开头,键是第二个元素,值是其余元素。
我正在逐行读取文件,为每个文件创建关联数组。
while read LINE
do
INPUT=$(echo $LINE |awk '{print $1}')
if [[ "$INPUT" = X ]]
then
key_name=$(echo $LINE | awk '{print $2}')
declare -A dependencies
value_names=($(echo $LINE|awk '{$1=$2=""; print $0}'))
dependencies[key_name]=value_names
echo -e "\nvalues of $key_name are ${key_name[*]}\n"
sleep 1
fi
done < $1
所以我失去了每行读数的价值。
但我需要将所有带有 X 的行存储在关联数组中,
因为我需要稍后为后面的行搜索键,假设:一行以 Y 开头,它有G,所以在这里我需要从关联的数组中找到值
用 G 键。
谁能建议一些想法,如何通过读取文件行来将所有以 X 开头的行存储在单个关联数组中?还是有更好的方法?
从这里给出的示例输入,输出将分为 3 行:
H I J
C D E
M N
这里 X,Y,X 正在识别行,如何处理下一个字符。如果 X 将其余部分存储在 KEY-PAIR 中,或者如果 Y 或 Z 从关联数组中提取值。
【问题讨论】:
-
在您的示例中只有一行以
X开头。 -
是的@mgamba,只有行以 X 开头。我需要逐行读取文件,因为我还必须读取以不同字符开头的其余行。
-
什么是
pkg_depends? -
declare -A dependencies行在循环内做什么? -
任何时候你在 shell 中编写一个循环只是为了操作文本你有错误的方法。操作文本的标准 UNIX 工具是 awk,所以只需使用它。根据您的示例输入发布预期输出,以便我们为您提供帮助。
标签: arrays linux bash unix awk