我有一个文件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"
如上所述,任何人都可以帮我创建字典。
答案 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