数据集是一个包含三列的大文件:一个部分的ID,一些不相关的内容和一行文本。示例可能如下所示:
A01 001 This is a simple test.
A01 002 Just for exemplary purpose.
A01 003
A02 001 This is another text
我想使用第一列(在此示例中为A01和A02,代表不同的文本)作为文件名,其内容是第二列之后该行中的所有内容。
上面的示例应该会生成两个文件,一个名称为A01
,内容为:
This is a simple test.
Just for exemplary purpose.
另一个A02
,内容为:
This is another text
我的问题是:
答案 0 :(得分:7)
awk
非常适合这类任务。如果你不介意有一些前导空格,你可以使用:
awk '{f=$1; $1=$2=""; print > f}' file
这将清空第一个和第二个字段,然后将所有行打印到f
文件中,该文件先前存储为第一个字段。
如果这些空间有困扰,您可以使用sub(" ", "")
删除它们:
awk '{f=$1; $1=$2=""; sub(" ", ""); print > f}' file
答案 1 :(得分:2)
Bash也会奏效。如果这是一个问题,可能比awk慢。
while read -r id num line; do
[[ $line ]] && echo "$line" >> $id
done < file