如何使用shell脚本创建字典

时间:2014-04-30 08:03:21

标签: bash shell

我有一个文件status.txt,格式如下:

1|A|B
2|C|D

现在我必须在shell脚本中读取此文件并创建一个字典,如:

dictionary['1'] = ['A', 'B']
dictionary['2'] = ['C', 'D']

我可以使用以下方式阅读文件内容:

while read line
    do
        key=$line | cut --d="|" -f1
        data1=$line | cut --d="|" -f2
        data2=$line | cut --d="|" -f3
    done < "status.txt"

如上所述,任何人都可以帮我创建字典。

4 个答案:

答案 0 :(得分:2)

根据你对while循环的想法,这是修复:

#!/usr/bin/env bash

while IFS="|" read -r key data1 data2
do 
  echo "dictionary['${key}'] = ['${data1}', '${data2}']"
done <"status.txt"

答案 1 :(得分:1)

将作业行更改为:

key=$(echo $line | cut -d"|" -f1)

然后添加以下行

printf "dictionary['%d'] = ['%s', '%s']\n" $key $data1 $data2

答案 2 :(得分:1)

#!awk -f
BEGIN {
  FS = "|"
}
{
  printf "dictionary['%s'] = ['%s', '%s']\n", $1, $2, $3
}

答案 3 :(得分:0)

根据先前的答案,我可以找出解决方案

#!/usr/bin/env bash

while IFS="|" read -r key data1 data2
do 
  echo "{'${key}' : {'${data1}', '${data2}'}},"
done <"status.txt"

所以它将给出如下结果

{'key1' : {'data1', 'data2'}, 'key2' : {'data1', 'data2'}}

然后,您可以使用其他任何语言来使用此结果。 示例:Python-通过
将上述字典字符串转换为json 1. json.dumps(result)可以将单引号转换为双引号
2. json.loads(result)将字符串转换为json