Unconfigured Ad

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • tonybert
    Member
    • Aug 2012
    • 38

    looping sed commands

    greatings, I was wondering if anyone could provide any clues/assitance in automating a series of commands. Currently, I am formatting Illumina data for a UPARSE/USEARCH pipeline. Post quality filtered, trimmed samples need to have the fasta header changed to from
    ">Sample1_sequence1"

    to

    ">barcodelabel=Sample1;Sample1_sequence1"

    This is easy to do with sed;

    sed 's/>Sample1/barcodelabel=Sample1/g' sample.fna > sample.rename.fna

    However, the file I have has 48 different samples, and I was wondering if there is way to automate or loop sed, so that it might be able to read the Sample names from a text file, and then replace them in the new file.

    Any suggestions are welcome. Thanks,

    -tony
  • WhatsOEver
    Senior Member
    • Apr 2012
    • 215

    #2
    Use the following commands to loop either linewise through or through all files of a certain directory. From that you can use e.g. "basename" to get the filename without the path or parse it in any other way you need it.

    In order to loop linewise through a file, use:
    Code:
    #Set the field seperator (IFS) to a line break
    IFS="
    "
    for line in `cat yourSampleNameFile.txt`;do
    sampleName = $line
    ...
    done
    If you want to loop through all files in a certain directory, use:
    Code:
    FILES=/path/to/your/sample/files/*
    for f in $FILES
    do
    echo "Processing file $f..."
    ...
    done

    Comment

    • tomc
      Member
      • Feb 2011
      • 29

      #3
      sed 's/^>\([^_]*\)_/>barcodelabel=\1;\1_/g' sample.fna > sample.rename.fna

      Should work for any number of sample names as long as they are
      between a leading ">" and followed with underscore.
      one pass, no redundant external copy of sample names required.

      Pitfalls to watch out for are lines with the start & end pattern
      but are not sample definition lines and empty sample names.
      These issues can be addressed by creating a more specific pattern recognizer
      within "\([^_]*\)" which is currently just "accept anything but an underscore".

      Comment

      Latest Articles

      Collapse

      ad_right_rmr

      Collapse

      News

      Collapse

      Topics Statistics Last Post
      Started by SEQadmin2, 06-05-2026, 10:09 AM
      0 responses
      15 views
      0 reactions
      Last Post SEQadmin2  
      Started by SEQadmin2, 06-04-2026, 08:59 AM
      0 responses
      33 views
      0 reactions
      Last Post SEQadmin2  
      Started by SEQadmin2, 06-02-2026, 12:03 PM
      0 responses
      35 views
      0 reactions
      Last Post SEQadmin2  
      Started by SEQadmin2, 06-02-2026, 11:40 AM
      0 responses
      23 views
      0 reactions
      Last Post SEQadmin2  
      Working...