我有一个大约25000列3000行的文件。从第4列开始,我想删除第3-5列,从第8列开始,一直到最后。
例子:
输入文件
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20
d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20
现在我要输出文件
c1 c2 c3 c4 c5 c9 c10 c11 c12 c13 c17 c18 c19 c20
d1 d2 d3 d4 d5 d9 d10 d11 d12 d13 d17 d18 d19 d20
我希望我的问题不是一个令人困惑的问题。我知道如何定期打印,但不知道如何解决这个问题。
最佳答案
最简单的方法可能是:
awk '{
printf "%s %s %s", $1, $2, $3
for (i=4; i<=NF; i++)
if ( ((i-3)%8) !~ /^[345]$/)
printf " %s", $i
print ""
}' file
c1 c2 c3 c4 c5 c9 c10 c11 c12 c13 c17 c18 c19 c20
d1 d2 d3 d4 d5 d9 d10 d11 d12 d13 d17 d18 d19 d20
可能需要调整一下数学,但希望你能明白。