Shell awk打印与特定最后记录关联的字段

Shell awk打印与特定最后记录关联的字段,shell,awk,Shell,Awk,我有一个关于awk打印的问题 这是我的简要数据文件格式 $cat file.dat 1 3 5 7 9 2 3 7 5 9 7 8 2 4 6 0 2 0 3 4 我想用“awk”打印该列 如果第n列的最后一个记录值大于0 喜欢这个表格吗 $cat file2.dat 3 7 9 3 5 9 8 4 6 2 3 4 我该怎么做 awk -v col=3 '$NF > 0 { print $col }' file 使用变量col指定要打印的列。然后,当最后一列条目($NF)大于0

我有一个关于awk打印的问题

这是我的简要数据文件格式

$cat file.dat

1 3 5 7 9
2 3 7 5 9
7 8 2 4 6
0 2 0 3 4
我想用“awk”打印该列 如果第n列的最后一个记录值大于0

喜欢这个表格吗

$cat file2.dat

3 7 9
3 5 9 
8 4 6
2 3 4
我该怎么做

awk -v col=3 '$NF > 0 { print $col }' file

使用变量col指定要打印的列。然后,当最后一列条目($NF)大于0时,打印col($col)指定的列条目。

欢迎使用SO,请您在问题中解释获取预期输出的逻辑。另外,请在你的问题中增加努力。你应该展示一个真实的输入/输出对。由于输入包含字面上的
$n
,并且您将其称为一个数字,因此示例输入并不代表真正的输入。如果您试图询问“如何删除最后一行中包含0的所有列”,则应采用两次传递的方法进行简单说明;读取文件但忽略除最后一行以外的所有行,提取非零字段的索引,再次读取整个文件并打印这些索引选择的字段。
tac file | awk | tac
也可以。很抱歉我的逻辑和解释不够。我的数据文件有100多列和100003行,每列的最后一条记录超过2000行。因此,我用简单的形式解释了我的问题。首先,感谢您的回答。我是否可以同时应用所有列,而不是单独应用每列?你的答案是只在3美元栏工作。(对不起,我对Linux完全是个新手。)是的。只需“print”而不是“print$col”,这将打印整行。你是说我只需要将“print$col”更改为“print”?但是不起作用。是的。。。。。。。。。。。。