AWK:如何在Bash中将列文件逐列读入AWK脚本?

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)

你为什么要这样做,而不是传递文件名呢?毕竟你已经有了这个文件。 - ghostdog74
@ghostdog74:完全没有。谢谢。 - hhh
2个回答

2

awk 命令的结尾中删除 filename

更改为

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

为了

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

第一个命令告诉 awk 从名为 read 的文件中获取输入,而第二个命令告诉 awk标准输入 中获取输入。
您运行脚本的方式是:./read.sh <data
您正在通过标准输入提供输入。
或者,如果您始终希望脚本从名为 data 的文件中读取输入,可以执行以下操作:
awk '{sum+=$1} END {print sum}' data

并且要运行该脚本,请使用以下命令: ./read.sh


你也可以使用“-”作为标准输入的文件名,而不是将其留空。我发现这样更容易阅读。 - drawnonward

1
此外,你的 she-bang 行是错乱的;它应该是 #!/bin/bash。但是这个应该可以工作:
#!/usr/bin/awk -f

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接