如何阅读双引号内的值?例如
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 :(得分:2)
试试这几个trics:
awk -F\" '{print $2}' inputfile
或
cut -d'"' -f2 inputfile
或
% s='input'
% expr "$s" : '.*"\([^"]*\)"'
这篇文章也很有用:
2。Unix - Shell Quoting Mechanisms
希望,这对你有用。
答案 1 :(得分: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