添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

如何使用“awk”跳过文件的第一行


Linux 中“awk”命令有多种用途。例如,它可用于打印文本文件的内容。许多文本文件的第一行包含文件的标题,有时,在打印文件内容时必须跳过第一行。在本教程中,我们将向您展示如何使用“awk”命令完成此任务。

创建一个文本文件

要按照本教程进行操作,请创建一个名为 booklist.txt 的制表符分隔文本文件,其中包含以下内容。该文件包含书籍及其相应作者的列表。在本教程中,我们将向您展示如何在跳过第一行后打印该文件的不同部分。

Cybersecurity with bash Paul Troncone, Carl Albing
Command Line Kung Fu Jason Cannon
Linux Command Line Travis Booth
Bash in easy steps Mike McGrath
Unix in easy steps Mike McGrath

示例 1:使用 NR 和“>”运算符跳过文件的第一行

NR 变量表示文件中的记录数。以下“awk”命令使用 NR 变量跳过文件的第一行。第一行的 NR 值为 1。以下命令将打印 NR 值大于 1 的行。

$ cat booklist.txt
$ awk '(NR>1)' booklist.txt

运行上述命令后将产生以下输出。输出包括文件第一行以外的所有行。

示例 2:使用 NR 和“!=”运算符跳过第一行

以下“awk”命令与前面示例中的命令类似。但是,这里使用“!=”比较运算符而不是“>”。

$ cat booklist.txt
$ awk 'NR!=1' booklist.txt

运行上述命令后将产生以下输出。输出显示文件第一行以外的所有行。

示例 3:使用条件语句跳过文件的第一行

如果 if 语句为 true,则以下“awk”命令将打印文件的行。这里,只有当 NR 值不等于 1 时,if 语句才为 true。

$ cat booklist.txt
$ awk '{if (NR!=1) {print}}' booklist.txt

运行上述命令后将产生以下输出。输出包括文件中除第一行之外的所有行。

示例 4:打印文件中的书籍名称,但跳过第一行

本示例中使用两个“awk”命令来打印除第一本书之外的所有书籍名称。 `awk` 命令将根据字段分隔符 (\t) 从文件中读取第一列,并将输出发送到第二个 `awk` 命令。第二个“awk”命令将打印所需的输出。

$ cat booklist.txt
$ awk -F " \t " '{print $1}' booklist.txt | awk 'NR!=1 {print}'

运行上述命令后将产生以下输出。输出显示除第一本书之外的所有书籍名称。

示例5:跳过第一行后格式化文件内容

在以下“awk”命令中使用“-F”选项、NR 变量和 printf 函数在跳过第一行后生成格式化输出。该命令会根据\t将文件内容分成列,当NR值至少为2时,printf将打印第一列和第二列。

$ cat booklist.txt
$ awk -F '\t' 'NR>=2 {printf "%30s %20s\n", $1, $2}' booklist.txt

运行上述命令后将产生以下输出。输出显示文件的格式化内容,不包括文件的第一行。

示例 6:使用 NR 和 NF 跳过第一行后打印书名

以下“awk”命令使用“-F”选项以及 NR 和 NF 在跳过第一本书后打印书籍名称。 ‘-F’选项用于以\t为基础分隔文件内容。 NR 用于跳过第一行,NF 用于仅打印第一列。

$ cat booklist.txt
$ awk -F '\t' 'NR>1 && NF=1' booklist.txt

运行上述命令后将产生以下输出。输出包括文件中除第一本书之外的所有书籍名称。

示例 7:跳过第一行后打印格式化的作者姓名

以下“awk”命令使用“-F”选项和条件语句在跳过第一行后打印作者姓名。这里,在if条件中使用NR值。这里,“作者姓名:\n\n”将被打印为第一行,而不是第一行的内容。对于 NR 的其他值,将打印文件中的作者姓名。

$ cat booklist.txt
$ awk -F '\t' ' {if (NR==1) printf "\nAuthor Name:\n\n"; else  printf "%s\n", $2}' booklist.txt

运行上述命令后将产生以下输出。输出显示带有换行符的文本“作者姓名:”,并且打印除第一个作者之外的所有作者姓名。

结论

可以使用各种 Linux 命令跳过文件的第一行。如本教程所示,有多种方法可以使用“awk”命令跳过文件的第一行。值得注意的是,“awk”命令的 NR 变量可用于跳过任何文件的第一行。