使用 AWK 提取多行

使用 AWK 提取多行

例如,如果我有一个包含多行和列的文件,是否可以提取特定的行和列?

例如

1 4/8/2016 4/7/2016 4/6/2016
2 john_doe jane_doe sarah_test
3 26 45 20
4 4/8/2015 6/8/2016 8/26/2016
5 5:15 2:30 6:00

所需输出

1 4/8/2016 4/7/2016 4/6/2016
2 john_doe jane_doe sarah_test
4 4/8/2015 6/8/2016 8/26/2016

答案1

是的,可以拉出特定的行和列。

这就是回答您提出的确切问题的结论。


不过,让我提供一些一般性建议:

awk建立在一个简单的条件——动作模型之上。

提供一个条件,然后提供与该条件相符的操作。

假设条件是“第三行”,操作是“打印该行的前两个字段”。这看起来像:

awk 'NR==3 {print $1, $2}'

假设条件是“行包含字母‘a’”,操作是“打印整行”。

awk '/a/ {print}'

由于打印整行是一个常见的操作,因此它是默认操作:

awk '/a/'

假设条件是“每一行”,操作是“打印第二个字段”。您可以省略条件:

awk '{print $2}'

欲了解更多,阅读正确的教程

答案2

awk '$2 ~ /^[abd]$/ { print $2, $3, $4 }'

对于第二个字段为ab、 或 的行d,打印第二个、第三个和第四个字段。

您根本没有具体说明您的选择标准,因此我不得不根据您提供的输入和输出之间的差异进行猜测。

相关内容