如何在Double引号中读取值

时间:2013-04-16 07:56:17

标签: unix

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

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

有人可以帮我提供一些如何执行上述操作的示例代码吗?

2 个答案:

答案 0 :(得分:2)

试试这几个trics:

awk -F\" '{print $2}' inputfile

cut -d'"' -f2 inputfile

% s='input'
% expr "$s" : '.*"\([^"]*\)"'

这篇文章也很有用:

1。UNIX SHELL Quote Tutorial

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