2013-07-26 21 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'