2013-07-26 17 views
0

嗨我有一个要求,我想从逗号分隔文件中提取值。当文件分隔符作为数据值出现时,问题就出现了。所有的值都会出现在一对单引号中,如果某个值没有出现,那么它将是空白的。 实施例:当分隔符到达数据本身时,从逗号分隔文件中提取值

cat file1.dat 
'Data1','DataA',,',',,'2','0','0' 
'Data2','DataB','X','D','3','1','2' 

在脚本我做以下

while read line 
do 
F1=`echo $line | cut -d"," -f1` 
F2=`echo $line | cut -d"," -f2` 
F3=`echo $line | cut -d"," -f3` 
F4=`echo $line | cut -d"," -f4` 
print $F1 
print $F2 
print $F3 
print $F4 
done < file1.dat 

当前输出:

'Data1' 
'DataA' 

' 
'Data2' 
'DataB' 
'X' 
'D' 

所需的输出:

'Data1' 
'DataA' 

',' 
'Data2' 
'DataB' 
'X' 
'D' 

回答

0

下列溶液屁股你有一个没有出现在输入中的字符。假设字符|未出现在file1.dat中,则以下内容将产生期望的结果:

$ sed "s/,',/,'|/" file1.dat | cut -d, -f1-4 --output-delimiter=$'\n' | tr '|' ',' 
'Data1' 
'DataA' 

',' 
'Data2' 
'DataB' 
'X' 
'D'