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'
4

1 回答 1

0

以下解决方案假定您有一个未出现在输入中的字符。假设该字符|未出现在 中file1.dat,那么以下将产生所需的结果:

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

','
'Data2'
'DataB'
'X'
'D'
于 2013-07-26T10:55:49.260 回答