2013-04-16 49 views
0

如何读取双引号内的值?例如如何读取双引号内的值

num1   num2 
170   "123 456 758" 
141   "890 768 134" 
546   "890 786 988 678 463" 

对于上述输入欲打印整个值分为两个部分: 双引号外数。 双引号

内的数字
num2 
123 456 758 
890 768 134 
890 786 988 678 463 

num1 
170 
141 
546 

有人可以帮助我对如何做上述示例代码?

+0

什么是NUM1 NUM2?他们是固定的字符串? '*'在字符串的末尾? – TrueY

+0

第一列和第二列之间是制表符还是空格? num1和num2是固定的还是可以改变的? – TrueY

回答

0

这是一个快速解决方案。如果你指定一个更一般的输入参数,我可以提供更好的一个。注释行是针对同一事物的其他解决方案。

awk 'NR==1 {left[1] = $1; print $2} 
NR>1 {left[NR]=$1; sub("^[0-9]+[[:space:]]+\"",""); sub("\"[[:space:]]*$", ""); print} 
#NR>1 {left[NR]=$1; if(match($0, "\"[0-9 ]+\"")) $0=substr($0, RSTART+1, RLENGTH-2); print} 
END { print ""; for(i=1;i<=NR;++i) print left[i] } 
' <<EOT 
num1   num2 
170   "123 456 758" 
141   "890 768 134" 
546   "890 786 988 678 463" 
EOT 

输出:

num2 
123 456 758 
890 768 134 
890 786 988 678 463 

num1 
170 
141 
546