2010-04-22 87 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 }