【发布时间】:2020-03-14 15:00:54
【问题描述】:
我想从一个看起来像这样的文本文件在 bash 中创建一个字典:
H96400275|A
H96400276|B
H96400265|C
H96400286|D
基本上我想从这个文件file.txt中得到这样的字典:
KEYS VALUES
H96400275 = A
H96400276 = B
H96400265 = C
H96400286 = D
我创建了以下脚本:
#!/bin/bash
declare -a dictionary
while read line; do
key=$(echo $line | cut -d "|" -f1)
data=$(echo $line | cut -d "|" -f2)
dictionary[$key]="$data"
done < file.txt
echo ${dictionary[H96400275]}
但是,这不会打印A,而是打印D。你能帮忙吗?
【问题讨论】:
-
不要为每次调用
cut创建额外的子shell,只需使用 参数扩展key="${line%|*}"和data="${line#*|}",或者只使用dictionary[${line%|*}]=${line#*|}(在修复-a到-A问题) -
这篇文章的评论不止一条!请考虑smart oguz ismail's answer
标签: bash shell dictionary