您好,我有一个要求,我想从逗号分隔文件中提取值。当文件定界符作为数据值出现时,会出现问题。所有值都将出现在一对单引号中,如果某些值未出现,那么它将为空白。 例如:
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 :(得分:0)
以下解决方案假定您有一个未出现在输入中的字符。假设字符|
没有出现在file1.dat
中,那么以下内容会产生所需的结果:
$ sed "s/,',/,'|/" file1.dat | cut -d, -f1-4 --output-delimiter=$'\n' | tr '|' ','
'Data1'
'DataA'
','
'Data2'
'DataB'
'X'
'D'