📜  使用 awk 打印来自多个文件的列 (1)

📅  最后修改于: 2023-12-03 15:22:09.528000             🧑  作者: Mango

使用 awk 打印来自多个文件的列

AWK是一种强大的文本分析工具,它可以对文本进行多种操作,其中包括打印文本文件中的指定列。使用AWK打印来自多个文件的列可以非常方便地批量处理数据。

1. 基本语法

以下是使用AWK打印来自多个文件的列的基本语法:

awk '{print <column>}' <filename1> <filename2> ...

其中,<column>代表要打印的列号,可使用数字或变量来表示。<filename1><filename2>等代表要处理的文件名,可以同时处理多个文件。

例如,我们要打印文件file1.txtfile2.txt中的第2列,可以使用以下命令:

awk '{print $2}' file1.txt file2.txt
2. 使用变量

如果要打印的列不是固定的,可以使用变量来代替列号。使用-v选项可以将变量传递给AWK程序。

例如,我们想要打印文件file1.txtfile2.txt中的第<col>列,可以使用以下命令:

awk -v col=<col> '{print $col}' file1.txt file2.txt
3. 使用通配符

如果要处理的文件非常多,我们可以使用通配符来代替文件名。

例如,我们要打印所有以.txt结尾的文件中的第2列,可以使用以下命令:

awk '{print $2}' *.txt
4. 输出结果到文件中

默认情况下,AWK会将结果输出到标准输出。如果要将结果输出到文件中,可以使用重定向符号>

例如,我们要将文件file1.txtfile2.txt中的第2列输出到文件result.txt中,可以使用以下命令:

awk '{print $2}' file1.txt file2.txt > result.txt
5. 应用示例

假设我们有以下三个文件:

$ cat file1.txt
name,age
Tom,18
Jack,20
Lily,19

$ cat file2.txt
name,score
Tom,90
Jack,85
Lily,92

$ cat file3.txt
name,gender
Tom,M
Jack,M
Lily,F

我们要将所有文件中的nameage列打印出来,可以使用以下命令:

$ awk -F ',' '{print $1,$2}' file1.txt file2.txt file3.txt
name age
Tom 18
Jack 20
Lily 19
name score
Tom 90
Jack 85
Lily 92
name gender
Tom M
Jack M
Lily F

在上面的命令中,-F选项指定了列之间的分隔符。print $1,$2表示打印第1列和第2列,用空格隔开。