在awk中处理文件中的数据
我有一个文件如下在awk中处理文件中的数据,awk,Awk,我有一个文件如下 (-0.548,15.994) (1.008,8.91) (-0.19,4.594) (-0.99,9.99) 我曾经 $ awk '{ mul = $1*$2; print mul }' input.txt > output.txt 但是output.txt文件的所有值都是0。 谁能告诉我哪里错了吗?如果你打印$1和$2的值,你就会看到问题所在。您还需要告诉awk使用,作为字段分隔符 这是您的代码的修订版本 awk -F, '{ gsub(/[
(-0.548,15.994)
(1.008,8.91)
(-0.19,4.594)
(-0.99,9.99)
我曾经
$ awk '{ mul = $1*$2; print mul }' input.txt > output.txt
但是output.txt文件的所有值都是0。
谁能告诉我哪里错了吗?如果你打印$1和$2的值,你就会看到问题所在。您还需要告诉
awk
使用,
作为字段分隔符
这是您的代码的修订版本
awk -F, '{ gsub(/[()]/, "", $0); mul = $1*$2; print mul }' input.txt > output.txt
输出
-8.76471
8.98128
-0.87286
-9.8901
$ cat f
(-0.548,15.994)
(1.008,8.91)
(-0.19,4.594)
(-0.99,9.99)
$ awk -F'[(,)]' '{ print $2*$3 }' f
-8.76471
8.98128
-0.87286
-9.8901
我认为Sheller用更好的选择击败了我几秒钟,但这里是:
sed 's/[^0-9,\.-]*//g' input.txt | awk '{split($1,x,","); mul=x[1]*x[2]; print mul}' > output.txt
awk
也可以有几个分隔符,您只需明智地设置字段sepFS
或-F
,这就足够了,您可以像下面这样简化您的命令
输入
-8.76471
8.98128
-0.87286
-9.8901
$ cat f
(-0.548,15.994)
(1.008,8.91)
(-0.19,4.594)
(-0.99,9.99)
$ awk -F'[(,)]' '{ print $2*$3 }' f
-8.76471
8.98128
-0.87286
-9.8901
输出
-8.76471
8.98128
-0.87286
-9.8901
$ cat f
(-0.548,15.994)
(1.008,8.91)
(-0.19,4.594)
(-0.99,9.99)
$ awk -F'[(,)]' '{ print $2*$3 }' f
-8.76471
8.98128
-0.87286
-9.8901