Search code examples
bashunixcut

Cut for variable delimiter - Bash


I want to get the second column of a file where separator between column 1 and column 2 is of variable length. For example:

A1_KOG1494_________AAMFAARSFSERK
A2_KOG1494_______AAKFALRSFSERK
A3_KOG1494___________AAKFALRSFSCCK

Thank's for your help


Solution

  • You can use awk with custom field separator:

    s='A1_KOG1494_________AAMFAARSFSERK'
    awk -F '_{2,}' '{print $2}' <<< "$s"
    AAMFAARSFSERK
    
    awk -F '_' '{print $NF}' <<< "$s"
    AAMFAARSFSERK
    

    Another example:

    awk -F '_{2,}' '{print $2}' <<< "A3_KOG1494___________AAKFALRSFSCCK"
    AAKFALRSFSCCK