awk +需要打印除1美元和2美元之外的所有内容(所有其他字段)

yae*_*ael 11 awk filtering

我有以下的文件,我需要打印的一切,除了$1$2通过awk

文件:

INFORMATION DATA 12 33 55 33 66 43 
INFORMATION DATA 45 76 44 66 77 33 
INFORMATION DATA 77 83 56 77 88 22
...
Run Code Online (Sandbox Code Playgroud)

理想的输出:

 12 33 55 33 66 43 
 45 76 44 66 77 33 
 77 83 56 77 88 22
...
Run Code Online (Sandbox Code Playgroud)

Dim*_*lov 19

那么,根据你的数据,削减应该足够了:

cut -d\  -f3- infile
Run Code Online (Sandbox Code Playgroud)


dan*_*ben 11

$ cat t
INFORMATION DATA 12 33 55 33 66 43
INFORMATION DATA 45 76 44 66 77 33
INFORMATION DATA 77 83 56 77 88 22

$ awk '{for (i = 3; i <= NF; i++) printf $i " "; print ""}' t 
12 33 55 33 66 43 
45 76 44 66 77 33 
77 83 56 77 88 22 
Run Code Online (Sandbox Code Playgroud)

  • 即使对于当前的问题比awk更简单(见下文),如果你必须对你的数据做一些计算,那么知道你的循环是非常有用的!我的一位同事不得不在两个第一列上执行添加,然后按原样打印其他列:一个简单的printf块然后你的块就可以了.谢谢你的答案(我选择了:-)). (2认同)

jll*_*gre 10

虽然与yael的预期输出相比,它在每行的开头添加了额外的空间,但这里有一个比以前建议的更短更简单的基于awk的解决方案:

awk '{$1=$2=""; print}'
Run Code Online (Sandbox Code Playgroud)

甚至:

awk '{$1=$2=""}1'
Run Code Online (Sandbox Code Playgroud)

  • 如果你想避免前导空格,你可以执行 `awk '{$1=$2="";$0=$0;$1=$1}1' file` (2认同)