2014-04-30 57 views
0

我有一个文件status.txt中是按以下格式:如何创建字典使用shell脚本

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

我不明白你的目录结构如何应该看起来。 'mkdir'有什么问题? – Bernhard

+0

这可能会让你走在正确的方向: http://stackoverflow.com/questions/1494178/how-to-define-hash-tables-in-bash – merlin2011

+0

value = \''echo“dictionary \ [\'$ key''] \\ = \\ [\'$ data1 \',\''data2 \'\]“\',然后mkdir $ value,我认为这会有所帮助 – Chandru

回答

2

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

#!/usr/bin/env bash 

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

修改你的分配线是这样的:

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

,然后添加以下行

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