2016-08-03 7 views
1

から始めて印刷し、N = 5短いawkはNから始まるフィールドを印刷するにはN番目のフィールド

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

どれ短いawk利用できると言いますか?デフォルトのフィールド区切りとGNU AWK(バージョン4+)で

+1

私はがあると思いません。わずかに短いwhileループを使うこともできますが、1行でしか動かないでしょう。また、私はあなたの以前の質問は、例がかなり短く関連していたのでうまくいったと思います。 – 123

+1

は 'i <= NF'であってはなりませんか?私のマシンでは、別の行にフィールドを印刷します。同じ行にあるフィールドのフィールドを印刷したいのですか? – Sundeep

答えて

1

、これはわずかに短いです:

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

これは、任意の先頭の空白を含む行の先頭から4つのフィールドを、削除します。非常に単純なアプリケーションの場合

+2

gawk 4.0以降が必要です。 – 123

+0

実際に良い、新しい知識が得られます:) – sjsam

0

cutは良く適しているかもしれない:

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

質問を再確認してください。OPは「awk」の解決策が必要です – Inian

+0

@Inian、場合によってはそうかもしれませんが、OPの文脈からそうですナットを壊すためにスレッジハンマーを使用する。それは役立つかもしれないし、役に立たないかもしれませんが、これが合理的な解決策であることを止めるわけではありません(結局のところ、要件の1つが「より短い」ということでした)。 –

関連する問題