2010-04-22 86 views
3
$ cat read.sh 
#!bin/bash 

// how can I read the columnwise data to awk-script? 
awk '{sum+=$1} END {print sum}' read 
$ cat data 
1 
2 
3 
4 
5 
$ . ./read.sh <data 
awk: cmd. line:1: fatal: cannot open file `read' for reading (No such file or directory) 
+0

任何你为什么要这样做,而不是传递文件名,因为你已经有文件的原因。 – ghostdog74 2010-04-22 03:39:56

+0

@ ghostdog74:根本没有。谢谢。 – hhh 2010-04-22 03:47:43

回答

2

awk命令的末尾删除filename作为第二个人告诉awk以获取输入standard input

您运行脚本的方式:./read.sh <data
您正在通过标准输入提供输入。

或者,如果你总是希望脚本读取名为data文件输入,你可以这样做:

awk '{sum+=$1} END {print sum}' data 

并运行该脚本为:./read.sh

+0

你也可以使用 - 作为stdin的文件名而不是留空。我发现更容易阅读。 – drawnonward 2010-04-22 03:55:37

1

此外,您的她邦线乱码;它应该是#!/bin/bash。但是,这应该工作,而不是:

#!/usr/bin/awk -f 

{ sum += $1 } 
END { print sum } 
#!/usr/bin/awk -f 

{ sum += $1 } 
END { print sum }