删除所有文件,并在字符前添加标记作为文件名



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

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,它可以通过它读取多个文件。

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

这将回显文件名,并在附加文件本身的内容之前将其附加到输出文件中。

在每个文件上循环并使用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

我做了一个组合:

cat /sharedpath/{unique1,unique2,unique3}/filename > newfile

tail -n +1 file1 file2

这:

tail -n +1 /sharedpath/{folder1,folder2,...,folder_n}/file.extension | cat > /sharedpath/newfile

结果是一个newfile它包含{}括号中每个子文件夹(unique1,unique2..)的内容,以子文件夹名称分隔。

注意unique1 = folder1

在我的例子中是文件。扩展名相同

$ grep . file*|sed -E 's/(^[^:]*):>/>1_/; s/^[^:]*://'
>file1_content
AGGAGAjg
GAUGAUGUG
AAG
>file2_Againontent
HDHDIHD
DHHDDHK
DH

相关内容

  • 没有找到相关文章

最新更新