使用 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

使用:

BEGIN {
} 

NR>6{ 
process here
} 

END {

}

在 awk 中,NR是行号。要跳过前六行的处理,我们添加条件NF>6。当此条件为假(即前六行)时,将不处理这些行。

处理多个文件

假设我们有一个文件夹,里面全是名为 000.txt 到 181.txt 的文本文件。下面是一个使用相同 awk 脚本处理所有这些文件并将它们发送到相应的输出文件(output000.txt - output181.txt)的示例:

awk 'NR>6{print>("output" FILENAME)}' {000..181}.txt

如果我们使用bash,那么{000..181}.txt将扩展为我们的 182 个输入文件的名称。

在 awk(这可能需要 GNU awk)中,FILENAME是 awk 当前正在处理的输入文件的名称。因此,这("output" FILENAME)是我们当前输出文件的名称。

以上代码仅作为示例,将输入文件除前六行之外的所有内容打印到输出文件中。更复杂的程序将使用相同的原理。

额外的:要处理目录中的每个文件(无论其文件名如何),请使用:

awk 'NR>6{print>("output" FILENAME)}' *

相关内容