AWK:如何在 Bash 中将列式文件读取到 AWK 脚本?

发布于 2024-08-29 23:40:00 字数 275 浏览 2 评论 0 原文

$ 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)
$ 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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酒浓于脸红 2024-09-05 23:40:00

awk 命令末尾删除 filename

更改

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

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

第一个告诉 awk 从名为 的文件中获取输入阅读,其中第二个告诉awk标准输入获取输入。

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

或者,如果您始终希望脚本从名为 data 的文件中读取输入,您可以执行以下操作:

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

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

Remove the filename from the end of the awk command:

Change

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

to

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

The 1st one tell awk to get the input from a file named read where as the 2nd one tells awk to get the input from standard input.

The way you are running the script: ./read.sh <data
You are supplying the input through standard input.

Alternatively if you always want the script to read input from the file named data, you can do:

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

and run the script as: ./read.sh

溺深海 2024-09-05 23:40:00

另外,你的 she-bang 行是乱码;它应该是#!/bin/bash。但这应该有效:

#!/usr/bin/awk -f

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

Also, your she-bang line is garbled; it should be #!/bin/bash. But this should work instead:

#!/usr/bin/awk -f

{ sum += $1 }
END { print sum }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文