从文件中批量提取数据,根据输入文件中的字符串命名新文件
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
//
使用 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
//