从第N个字段开始打印更短的awk

时间:2016-08-03 10:15:46

标签: bash awk gawk

要打印从N开始的字段,请说N = 5

awk '{for(i=5;i<=NF;i++){if(i<NF){printf "%s%s",$i,OFS}else{print $i}}' 
# This is a bit lengthy!

任何较短的awk可用吗?

2 个答案:

答案 0 :(得分:1)

使用默认字段分隔符和GNU awk(版本4+),这稍微缩短:

if (Convert.ToBoolean(mask & 1))
{

    faces.Add(buffer[m]);
    faces.Add(buffer[m - dv]);
    faces.Add(buffer[m - du]);

    faces.Add(buffer[m - dv]);
    faces.Add(buffer[m - du - dv]);
    faces.Add(buffer[m - du]);
}
else
{
    faces.Add(buffer[m]);
    faces.Add(buffer[m - du]);
    faces.Add(buffer[m - dv]);

    faces.Add(buffer[m - du]);
    faces.Add(buffer[m - du - dv]);
    faces.Add(buffer[m - dv]);
}

mesh.SetTriangles(faces, 0);

这将从行的开头删除4个字段,包括任何前导空格。

答案 1 :(得分:0)

对于非常简单的应用程序,cut可能更适合:

$ echo "1 2 3 4 5 6 7 8" | cut -d' ' -f5-
5 6 7 8