在行尾追加文件名

2024-09-29 21:27:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有许多fasta文件,想在行尾(标题行)附加文件名。我知道如何通过sed一个接一个地执行它,但是正在寻找一个更好的解决方案来处理许多文件。你知道吗

File1.txt
>1
ACGTA

File2.txt
>2
GTCA

期望:

File1.txt
>1_File1
ACGTA

File2.txt
>2_File2
GTCA

这适用于在OSX中使用sed的单个文件:

sed -i.bak '/>.*$/ s/$/_File1/' File1.txt

谢谢


Tags: 文件txt标题解决方案file1sedfastafile2
3条回答

您可以使用Perl的就地编辑功能:

perl -i.bak -p0e '$ARGV =~ s/\..*//; s/>.*/$&_$ARGV/' File*.txt

您可能需要根据文件名更改表达式,但基本上您希望遍历所有文件

    #!/bin/bash
    for file in *.txt
    do
      #just for echo the current 'file' var for testing
      echo "$file"
      sed -i.bak '/>.*$/ s/$/_"$file"/' $file
    done

您可以使用这个简单的for循环:

for f in *.txt; do
   sed -i '' 's/^>.*/&_'"${f%.*}"'/' "$f"
done

"${f%.*}"将从文件名中删除扩展名。你知道吗

相关问题 更多 >

    热门问题