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

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

4

2 回答 2

2

试试这几个技巧:

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

或者

cut -d'"' -f2 inputfile

或者

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

这篇文章也很有用:

1. UNIX SHELL 报价教程

2. Unix - Shell 引用机制

希望,这对你有用。

于 2013-04-16T08:10:40.920 回答
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
于 2013-04-16T08:33:34.027 回答