对所有文件进行分类,并在一个字符前添加一个标签作为文件名

Cat all files and add a tag as the file name before a character

大家好,我有几个文件,例如

FILE1
>content
AGGAGAjg
GAUGAUGUG
AAG
FILE2
>Againontent
HDHDIHD
DHHDDHK
DH

我想将所有这些文件整合到一个唯一的文件中 使用 cat FILE* >> Unique_file

还要在每个文件的 > 之前添加文件名。

那么 Unique_file 的内容将是:

>FILE1_content
AGGAGAjg
GAUGAUGUG
AAG
>FILE2_Againontent
HDHDIHD
DHHDDHK
DH

能否请您尝试以下。在 GNU `awk.

中编写和测试
awk 'FNR==1{sub(/^>/,"&"FILENAME"_")} 1' file1 file2

说明: 检查条件 FNR==1 每个文件的第一行都为真。然后用 > 代替开始 > 和当前文件名,在当前行中添加 _ 。 1 将打印所有其余行。

注意:您可以将多个文件传递给awk,它能够读取多个文件。

在每个文件上循环并使用 sed:

for fil in *;
do 
 sed "1s/>/>$fil\_/" $fil >> Unique_file;   # On the first line of the file substitute ">" for ">" followed by the file name (fil) and "_"
done

for file in $(ls FILE*); do echo $file >> unique_file; cat $file >> unique_file; done

这将回显文件名并将其附加到输出文件,然后再附加文件本身的内容。