Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 从第n个字段开始打印的较短awk_Bash_Awk - Fatal编程技术网

Bash 从第n个字段开始打印的较短awk

Bash 从第n个字段开始打印的较短awk,bash,awk,Bash,Awk,要打印从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'{for(i=5;i使用默认字段分隔符和GNU awk(版本4+),这稍微短一些: gawk '{ sub(/^\s*(\S+\s+){4}/, "") }1' file 这将从行首删除4个字段,包括任何前导空格。对于非常简单的应用程序,cu

要打印从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'{for(i=5;i使用默认字段分隔符和GNU awk(版本4+),这稍微短一些:

gawk '{ sub(/^\s*(\S+\s+){4}/, "") }1' file

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

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

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

我不认为没有。你可以使用稍微短一点的while循环,但它只能在一行上工作。另外,我认为你之前的问题很好,因为例子很短,也很相关。它不应该是
I为什么不
awk-vn=5'{for(i=n;i@DavidC.Rankin谢谢。稍微短一点。需要gawk 4.0+。请重新检查问题,OP只想在
awk
@Inian中找到解决方案,这可能是事实,但从OP的上下文来看,似乎是用大锤敲开螺母。这可能对他们有帮助,也可能没有帮助,但这并不能阻止这是一个合理的解决方案(毕竟,其中一项要求是“更短”)。