从文件中批量提取数据,根据输入文件中的字符串命名新文件

batch extracting data from files, naming new files according to string in input file

使用 Linux 我想自动从 .dat 文件中提取数据并根据输入文件中的字符串命名新文件:

我有300个.dat文件,数据结构如下:

.
.
.
DE name1, contig1 .
.
SQ
information1
//
.
.
DE name1, contig2 .
.
SQ
information2
//
.

其中“.”代表我不需要的行。我现在想从 .dat 文件中提取所有 "information" 并从 DE.

行生成一个名为 "name1" 的新文件
    for file in *.dat;
do
    awk '/SQ/{flag=1;next}/"//"/{flag=0}flag' "$file" > ???
done

您建议使用什么命令来执行此任务?

您可以使用这个 awk 1 衬里:

awk -F '[, ]' '/^DE/ {filename=} /SQ/,/\/\// {print > filename}' file.dat

这是一个示例 运行:

$ ls
file.dat
$ cat file.dat 
.
.
.
DE name1, contig1 .
.
SQ
information1
//
.
.
DE name2, contig2 .
.
SQ
information2
//
.
$ awk -F '[, ]' '/^DE/ {filename=} /SQ/,/\/\// {print > filename}' file.dat 
$ ls
file.dat  name1  name2
$ cat name1
SQ
information1
//
$ cat name2
SQ
information2
//