如何读取双引号内的值?例如如何读取双引号内的值
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
有人可以帮助我对如何做上述示例代码?
如何读取双引号内的值?例如如何读取双引号内的值
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
有人可以帮助我对如何做上述示例代码?
试试这几个trics:
awk -F\" '{print $2}' inputfile
或
cut -d'"' -f2 inputfile
或
% s='input'
% expr "$s" : '.*"\([^"]*\)"'
该文章也很有用:
2. Unix - Shell Quoting Mechanisms
希望,这将对你有用。
非常感谢。它的工作 – user2285422
这是一个快速解决方案。如果你指定一个更一般的输入参数,我可以提供更好的一个。注释行是针对同一事物的其他解决方案。
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
什么是NUM1 NUM2?他们是固定的字符串? '*'在字符串的末尾? – TrueY
第一列和第二列之间是制表符还是空格? num1和num2是固定的还是可以改变的? – TrueY