使用AWK中的第一个字段作为文件名

bey*_*ran 5 bash awk corpus

数据集是一个包含三列的大文件:一个部分的ID,一些不相关的内容和一行文本.示例可能如下所示:

A01 001 This is a simple test.
A01 002 Just for exemplary purpose.
A01 003
A02 001 This is another text
Run Code Online (Sandbox Code Playgroud)

我想使用第一列(在此示例中为A01和A02,表示不同的文本)作为文件名,其内容是第二列之后该行中的所有内容.

上面的示例应该会生成两个文件,一个包含名称A01和内容:

This is a simple test.
Just for exemplary purpose.
Run Code Online (Sandbox Code Playgroud)

另一个A02内容如下:

This is another text
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. AWK是否适合执行此任务?或者也许有更方便的方法呢?
  2. 这项任务将如何完成?

fed*_*qui 7

awk适合这类任务.如果你不介意有一些前导空格,你可以使用:

awk '{f=$1; $1=$2=""; print > f}' file
Run Code Online (Sandbox Code Playgroud)

这将清空第一个和第二个字段,然后将所有行打印到f文件中,该文件先前存储为第一个字段.

如果这些空间很烦,你可以用sub(" ", "")以下方法删除它们:

awk '{f=$1; $1=$2=""; sub("  ", ""); print > f}' file
Run Code Online (Sandbox Code Playgroud)