Awk 创建用于从文本文件获取数据的脚本

Awk 创建用于从文本文件获取数据的脚本,awk,Awk,我有一个名为stat.txt的文本文件,其中包含每行的格式 --。每行包含一个用户名、一个IP地址、一个文件名和一个下载文件大小。我需要创建一个脚本userstat.awk,它允许在编写特定命令时获取以下数据: userstat.awk u-将列出所有文件 userstat.awk total-将列出所有文件的总大小 到目前为止,我已尝试使用默认命令列出用户的所有文件,但无法使用这些命令。给定stat.txt: user-1.1.1.1-file.jpg-20 root-1.1.1.1-file

我有一个名为stat.txt的文本文件,其中包含每行的格式

--
。每行包含一个用户名、一个IP地址、一个文件名和一个下载文件大小。我需要创建一个脚本userstat.awk,它允许在编写特定命令时获取以下数据:

userstat.awk u-将列出所有文件 userstat.awk total-将列出所有文件的总大小

到目前为止,我已尝试使用默认命令列出用户的所有文件,但无法使用这些命令。

给定stat.txt:

user-1.1.1.1-file.jpg-20
root-1.1.1.1-file.jpg-20
user-1.1.1.1-img.jpg-20
root-1.1.1.1-thing.jpg-20
您可以使用该命令(由@clasewinker改进):

要输出:

file.jpg
file.jpg
img.jpg
thing.jpg
total: 80

如@Scheff所述,当用户名或文件名包含
-

时,这将不起作用。您能给我们一个示例输入文件和预期输出吗?那太好了。乍一看,这看起来很容易,因为您可以在awk中更改列分隔符。在这种情况下,可以使用
awk-F-
。但如果
本身包含一个“-”,则此操作将失败。如果
是模式的物理部分,我将使用正则表达式来分隔字段。请提供已经建议的示例输入和预期输出…也许您可以添加一些示例数据。如果可能的话,发布你的代码。但是为什么不一次打印出来呢?awk-F-{print$3;s+=$4}END{print”总计:“s}”stat.txt
file.jpg
file.jpg
img.jpg
thing.jpg
total: 80