Bash - 仅使用 awk 打印矩阵的某些部分

标签 bash awk sed

我想读取一个数字矩阵

1 3 4 5 
2 4 9 0

并且只希望我的 awk 语句打印出第一个和最后一个,所以 1 和 0。到目前为止我已经有了这个,但什么也不会打印。我的逻辑有什么问题?

    awk 'BEGIN {for(i=1;i<NF;i++)
        if(i==1)printf("%d ", $i);
        else if(i==NF && i==NR)printf("%d ", $i);}'

最佳答案

$ awk '{ if (NR==1) { print $1}} END{print $NF}' matrix
1
0

上面的 awk 程序有两部分。第一个是:

{ if (NR==1) { print $1}}

这将打印文件第一条记录(行)的第一个字段(列)。

第二部分是:

END{print $NF}

这部分仅在最后一条记录(行)被读取后运行。它打印该行的最后一个字段(列)。

关于Bash - 仅使用 awk 打印矩阵的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22598827/

相关文章:

git - Bash:如何捕获 git 命令失败?

bash - awk 和 bash 脚本?

linux - 如何在忽略某些目录的同时找到超过一定大小的所有文件(使用 bash 脚本)

bash - 使用sed删除文件中每一行的前缀并输出到另一个文件

linux - 如何在 unix 中删除文件的最后一个字符?

php - 为什么有些字符无法从 Linux/Bash 环境变量中提取到 PHP 中?

arrays - 如何在 Bash 中将字符串列表转换为 JSON 字符串数组?

bash - 使用 shell 脚本从日志中提取值

regex - 使用 sed 提取文本

linux - 树莓派进入显示器休眠