Search code examples
bashunixgreppipeline

How to filter pipeline data according to column?


I wrote the following pipeline:

for i in `ls c*.txt | sort -V`; do echo $i; grep -v '#' ${i%???}_c_new.txt | grep -v 'seq-name' | cut -f 6 | grep -o '[0-9]*' | awk '{s+=$1} END {print s}'; done

Now, I want to take 6th column (cut -f 6 and later code) of only those lines, which match certain grep in 13th column.

These:

cut -f 13 | grep -o '^A$'

So that I look at 13th column and if grep matches, then I take this line and make rest of the code - counting sum of numbers in 6th column.

Please, how can I do such a thing? Thanks.


Solution

  • Make a grep command that will take uncut lines and filter by 13th field, like

     grep -E '(\S+\s+){12}A\s'
    

    and then pipe it to cut -f 6 and so on.