Board logo

标题: [文件操作] 批处理怎样批量修改文件第一行内容后整合文件? [打印本页]

作者: uuuuuuuup    时间: 2022-3-3 15:55     标题: 批处理怎样批量修改文件第一行内容后整合文件?

我有一系列的*.seq文件,现在想把他们的第一行修改后整合到一个*.fasta文件中
目前*.seq文件的第一行是“>ID-XXXXXXXX”现在想修改为“ID,WP_COI_gene”,其中ID是变化的,一个文件一个,修改完第一行后还要把全部*.seq文件的内容整合到*.fasta文件中,seq文件共10行
有大神可以帮帮忙嘛,小弟在此谢过!
作者: uuuuuuuup    时间: 2022-3-3 15:57

怎么上传不了图片
作者: qixiaobin0715    时间: 2022-3-4 09:04

不要XXX XXX,需要举一个真实的例子。
列出第一行完整的字符串;
列出修改后完整字符串。
作者: uuuuuuuup    时间: 2022-3-8 16:21

举例,第一个文件第一行">0-HC02198-yin_B11.ab1"修改为">0, WP_COI_gene"
第二个文件第一行">1-HC02198-yin_C11.ab1"修改为">1, WP_COI_gene"
第三个文件第一行">2-HC02198-yin_D11.ab1"修改为">2, WP_COI_gene"
其他的文件以此类推
作者: uuuuuuuup    时间: 2022-3-8 16:21

回复 3# qixiaobin0715
举例发到下面了
作者: for_flr    时间: 2022-3-8 21:47

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. if not exist newseq md newseq
  4. for /f "delims=" %%a in ('dir /b /a-d *.seq') do (
  5.   set/p firstline=<%%a
  6.   for /f "tokens=1,* delims=-" %%i in ("!firstline!") do (
  7.     echo;%%i,WP_COI_gene
  8.     more +1 %%a
  9.   )>newseq\%%a
  10. )
  11. copy /b newseq\*.seq newseq\big.fasta
  12. echo;处理完毕&pause>nul
复制代码

作者: Batcher    时间: 2022-3-8 23:06

回复 2# uuuuuuuup


换个图床试试吧:
http://bbs.bathome.net/thread-60985-1-1.html
作者: uuuuuuuup    时间: 2022-3-9 13:33

回复 6# for_flr


    感谢大神,不过运行了一下发现有点问题,运行后第一行变成了"TAAAGTATAAAGTACCAATATCTTNNNNNNNNNNNTNANCNNNNNNN,WP_COI_gene",其中前面那一串是我这个文件的最后一行,我想要">1,WP_COI_gene"就行了,前面的数字是编号,不知可否实现?
作者: qixiaobin0715    时间: 2022-3-9 14:12

最好能将测试文件传上来,以方便测试代码。
作者: uuuuuuuup    时间: 2022-3-10 09:14

回复 9# qixiaobin0715


    附件和图片都传不上去不知道怎么回事,我把文件内容发到下面
作者: uuuuuuuup    时间: 2022-3-10 09:16

文件上传不了,把文件内容发上来
文件1名称:0-HC02198-yin_B11.seq
>0-HC02198-yin_B11.ab1 NNNNNNNNNNANANATAGGATCCCCCCCTCCTATAGGGTCAAAGAAAGTAGTATTTAAATTTCGATCTGTAAGTAATATT GTAATAGCTGCTGCTAAAACTGGTAATGATAATAATAATAAAATAGTAGTAATAACAACTGACCAAACAAATAATGGTAC TCGTTCAGTTGTTATCCCTTTAGTTCGTATATTTATAATAGTCGAAATAAAATTTAATGACCCTAAAATAGATGAGGCAC CAGCTATATGTAATGAGAAGATGGCTATGTCAACGGATGGGCCTGAATGAGATACGGAGTCTGATAGTGGGGGATAAAGG GTTCACCCTGCACCTACACCACCCTCAATTAAGGATGACCTAAGCAATATGATTATTGAAGGGGGTAGTAACCAAAATCT TAAATTATTCAGACGAGGAAATGATATATCTACGGCTCCTACCATTAATGGCAGGAGTCAATTACCAAACCCACCAATTA GAATTGGTATAACTATAAAGAAGATTATAACCAACCCATGAGCCGTTACTAGTGAATTATACAATTGGTCGTCTCCAAGG AATCTTCCTGGCTGTGCTAATTCAATTCGAATAATTGATCTTATAGAAGAGCCTAACATAGCTGATCACGTTCCTAAAAT AAAGTATAAAGTACCAATATCTTTNNNNNNNNNNNNNNNN
文件2名称:1-HC02198-yin_C11.seq
>1-HC02198-yin_C11.ab1 NNNNNNNNNTGNANNAATAGGATCCCCCCCTCCTATAGGGTCAAAGAAAGTAGTATTTAAATTTCGATCTGTAAGTAATA TTGTAATAGCTGCTGCTAAAACTGGTAATGATAATAATAATAAAATAGTAGTAATAACAACTGACCAAACAAATAATGGT ACTCGTTCAGTTGTTATCCCTTTAGTTCGTATATTTATAATAGTCGAAATAAAATTTAATGACCCTAAAATAGATGAGGC ACCAGCTATATGTAATGAGAAGATGGCTATGTCAACGGATGGGCCTGAATGAGATACGGAGTCTGATAGTGGGGGATAAA GGGTTCACCCTGCACCTACACCACCCTCAATTAAGGATGACCTAAGCAATATGATTATTGAAGGGGGTAGTAACCAAAAT CTTAAATTATTCAGACGAGGAAATGATATATCTACGGCTCCTACCATTAATGGCAGGAGTCAATTACCAAACCCACCAAT TAGAATTGGTATAACTATAAAGAAGATTATAACCAACCCATGAGCCGTTACTAGTGAATTATACAATTGGTCGTCTTCAA GGAATCTTCCTGGCTGTGCTAATTCAATTCGAATAATTGATCTTATAGAAGAGCCTAACATAGCTGATCACGTTCCTAAA ATAAAGTATAAAGTACCAATATCTTNNNNNNNNTNTNTGNNNNNNNNNNN
作者: uuuuuuuup    时间: 2022-3-10 09:17

回复 7# Batcher


    附件也无法上传
作者: uuuuuuuup    时间: 2022-3-10 09:18

回复 11# uuuuuuuup


    格式有些错误,应该是
>0-HC02198-yin_B11.ab1
NNNNNNNNNNANANATAGGATCCCCCCCTCCTATAGGGTCAAAGAAAGTAGTATTTAAATTTCGATCTGTAAGTAATATT
GTAATAGCTGCTGCTAAAACTGGTAATGATAATAATAATAAAATAGTAGTAATAACAACTGACCAAACAAATAATGGTAC
TCGTTCAGTTGTTATCCCTTTAGTTCGTATATTTATAATAGTCGAAATAAAATTTAATGACCCTAAAATAGATGAGGCAC
CAGCTATATGTAATGAGAAGATGGCTATGTCAACGGATGGGCCTGAATGAGATACGGAGTCTGATAGTGGGGGATAAAGG
GTTCACCCTGCACCTACACCACCCTCAATTAAGGATGACCTAAGCAATATGATTATTGAAGGGGGTAGTAACCAAAATCT
TAAATTATTCAGACGAGGAAATGATATATCTACGGCTCCTACCATTAATGGCAGGAGTCAATTACCAAACCCACCAATTA
GAATTGGTATAACTATAAAGAAGATTATAACCAACCCATGAGCCGTTACTAGTGAATTATACAATTGGTCGTCTCCAAGG
AATCTTCCTGGCTGTGCTAATTCAATTCGAATAATTGATCTTATAGAAGAGCCTAACATAGCTGATCACGTTCCTAAAAT
AAAGTATAAAGTACCAATATCTTTNNNNNNNNNNNNNNNN
作者: for_flr    时间: 2022-3-10 11:01

没想明白之前的代码bug在哪里,我这边测试没问题。
你试试下面这个呢,注意做好数据备份!
注意做好数据备份!
  1. #@&cls&powershell "gc '%~0'|out-string|iex"&pause&exit/b
  2. $str="WP_COI_gene"
  3. dir -filter *.seq|%{
  4.     $new=@()
  5.     $content=(gc $_).split("")
  6.     if($content[0] -match '>(\d+)-'){
  7.         $new+=$matches[0].replace('-',',')+$str
  8.         $new+=$content|select -skip 1
  9.         sc -path $_ $new
  10.         ac -path all.fasta $new
  11.     }
  12. }
复制代码

作者: qixiaobin0715    时间: 2022-3-10 15:22

本帖最后由 qixiaobin0715 于 2022-3-10 15:46 编辑

换个思路,可以上传到网盘上分享即可。
发上来的文件内容由于多种原因可能与文件本身会有差异,何况是你杜撰出来的呢?
作者: Batcher    时间: 2022-3-10 15:41

回复 12# uuuuuuuup


如需上传截图,请用图床:
http://bbs.bathome.net/thread-60985-1-1.html

如需上传附件,请用阿里云盘或百度网盘。
作者: uuuuuuuup    时间: 2022-3-11 08:44

回复 14# for_flr


    这个可以,太牛了哥!
作者: uuuuuuuup    时间: 2022-3-11 08:45

回复 15# qixiaobin0715


    好的,下次发网盘,这文件就是这样的,不是我瞎编的
作者: uuuuuuuup    时间: 2022-3-11 09:07

回复 14# for_flr


    大哥顺便再问你一下,如果我的文件第一行有改变应该怎么套代码?比如说>7-HC02198-yin_A12.ab1变成了>Y7-HC02198-yin_A12.ab1这样子
作者: for_flr    时间: 2022-3-11 10:10

  1. #@&cls&powershell "gc '%~0'|out-string|iex"&pause&exit/b
  2. $str="WP_COI_gene"
  3. dir -filter *.seq|%{
  4.     $new=@()
  5.     $content=(gc $_).split("")
  6.     $new+=$content[0].substring(0,$content[0].indexof('-'))+","+$str
  7. #取第一行字符串的开头到短横线“-”之间的内容,然后加逗号再加"自定义字符串"
  8.     $new+=$content|select -skip 1
  9.     sc -path $_ $new
  10.     ac -path all.fasta $new
  11. }
复制代码

作者: uuuuuuuup    时间: 2022-3-11 10:52

回复 20# for_flr


    好牛,谢谢大哥!




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2