使用 awk 跳过文本文件中的前 6 行/行

使用 awk 跳过文本文件中的前 6 行/行

如何跳过文本文件 (input.txt) 中的前 6 行/行并使用 awk 处理其余部分?我的 awk 脚本 (program.awk) 的格式是:

BEGIN {
} 

{ 
process here
} 

END {

}

我的文本文件是这样的:

0
3
5
0.1 4.3
2.0 1.5
1.5 3.0
0.3 3.3
1.5 2.1
.
.
.

我想从以下位置开始处理文件:

0.3 3.3
1.5 2.1
.
.
.

答案1

使用两种模式之一:

NR>6 { this_code_is_active }

或这个:

NR<=6 { next }
{ this_code_is_active }

如果您有许多文件作为 awk 的参数并且想要在每个文件中跳过 6 行,请使用 FNR 而不是 NR。

答案2

尝试:

awk 'FNR > 6 { #process here }' file

答案3

head您还可以使用或程序在文件的开头或结尾跳过任意数量的行tail

对于你的具体问题,

tail input.txt -n+7 | program.awk

就可以了,只要你的program.awk文件是可执行的。否则,您可以使用

tail input.txt -n+7 | awk -f program.awk

这样,您就无需对每一行进行比较,并且无需更改 AWK 代码的逻辑。

tail将从第七行开始流式传输文本,跳过前六行。

这对性能来说不会有太大影响,特别是如果文本处理由于缓存而很简单的话。然而,对于长文件和在云环境中重复使用可能会节省一些成本。

答案4

for pkg in $(pip list | awk 'FNR > 2 { print $1 }'); do pip install --upgrade $pkg; done

相关内容