AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-11204240

pedro's questions

Martin Hope
pedro
Asked: 2023-12-22 03:24:39 +0800 CST

String reversa em campos específicos com condição

  • 8

Eu tenho esse arquivo:

m64071_220512_054244/12584899/ccs rev pet047-10055 ACGTGCGACCTTGTGA TTGAGGGTTCAAACGTGCGACCTTGTGA
m64071_220512_054244/128321000/ccs rev pet047-10055 ACGTGCGACCTTGTGA TTGAGGGTTCAAACGTGCGACCTTGTGA
m64071_220512_054244/132186699/ccs fwd pet047-10055 TCACAAGGTCGCACGT TCACAAGGTCGCACGTTTGAACCCTCAA
m64071_220512_054244/134874748/ccs fwd pet047-10055 TCACAAGGTCGCACGT TCACAAGGTCGCACGTTTGAACCCTCAA

Eu preciso tre reverseos campos $4 e $5 somente se$2==rev

Esperar :

m64071_220512_054244/12584899/ccs rev pet047-10055 TCACAAGGTCGCACGT TCACAAGGTCGCACGTTTGAACCCTCAA
m64071_220512_054244/128321000/ccs rev pet047-10055 TCACAAGGTCGCACGT TCACAAGGTCGCACGTTTGAACCCTCAA
m64071_220512_054244/132186699/ccs fwd pet047-10055 TCACAAGGTCGCACGT TCACAAGGTCGCACGTTTGAACCCTCAA
m64071_220512_054244/134874748/ccs fwd pet047-10055 TCACAAGGTCGCACGT TCACAAGGTCGCACGTTTGAACCCTCAA

Tentei :

perl -lpe 'if(/rev/) {$rev=/rev/;next}; if ($rev) {$F[4,5]=~tr/ATGC/TACG/; $F[4,5]=reverse $F[4,5]; print "@F"}' file 

Eu também tentei usar o awk ( Execute o comando bash dentro do awk e imprima a saída do comando )

awk '{
            if($2==rev)
        {
            cmd1="echo \047" $4 "\047 | rev | tr \047ATGC\047 \047TACG\047" 
            cmd2="echo \047" $5 "\047 | rev | tr \047ATGC\047 \047TACG\047"
            newVar1=((cmd1 | getline line) > 0 ? line : "failed") 
            newVar2=((cmd2 | getline line) > 0 ? line : "failed")
            close(cmd)
            print $1, $2, $3, newVar1, newVar2
        }
        else {print}
}' file
bash
  • 4 respostas
  • 78 Views
Martin Hope
pedro
Asked: 2023-12-21 23:23:11 +0800 CST

Valor da coluna Grep na mesma linha e linha de impressão

  • 3

Eu tenho este arquivo de 5 colunas:

m64071_220512_054244/46858502/ccs TCTACACGACGCTCTTCCGATCTTATTGGGCACGGTGTCGCCATCTGATCGTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGAGGTTTGCAGCTATTTTATTTACAAGTATACATTTAACACAATGAAATAAACACTGATATACTGAAGCCTAGTTAATAGTAGTGTAACAATATGCATCATTTTGATGATTACATTATTTTAAACAACAAACTACACTGAAAAATTAATGCCGATAAAATTCTTGGTCATAATATTAAGAAATACAATATATAAATTGAAAATATGATTGCTTAAAATTTGAAAATGGAAGTGAACTCATTTGGACAGACTCAGAGTTAACATAATCTGAAGGGAGGGGAGCTCTGACCCAAATGATATCTTTCAGGTTAACAGAAGAAAAAAGAAGCATAGTTTATCTTCAAGGAGAACGGGCAGTTTGCTTCTTCAGGTA fwd pet047-9952 TATTGGGCACGGTGTC
m64071_220512_054244/52233509/ccs AGCTTTTTTGGAATCTTCTGCTAAAGAAAATCAGACTGCTGTGGATGTTTTTCGAAGGATAATTTTGGAGGCAGAAAAAATGGACGGGGCAGCTTCACAAGGCAAGTCTTCATGCTCGGTGATGTGATTCTGCTGCAAAGCCTGAGGACACTGGGAATATATTCTACCTGAAGAAGCAAACTGCCCGTTCTCCTTGAAGATAAACTATGCTTCTTTTTTCTTCTGTTAACCTGAAAGATATCATTTGGGTCAGAGCTCCCCTCCCTTCAGATTATGTTAACTCTGAGTCTGTCCAAATGAGTTCACTTCCATTTTCAAATTTTAAGCAATCATATTTTCAATTTATATATTGTATTTCTTAATATTATGACCAAGAATTTTATCGGCATTAATTTTTCAGTGTAGTTTGTTGTTTAAAATAATGTAATCATCAAAATGATGCATATTGTTACACTACTATTAACTAGGCTTCAGTATATCAGTGTTTATTTCATTGTGTTAAATGTATACTTGTAAATAAAATAGCTGCAAACCTCGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGATCAGATGGCGACACCGTGCCCAATAAGATCGGAAGAGCGTCGTGTAGA rev pet047-9952 GACACCGTGCCCAATA
m64071_220512_054244/91226755/ccs TCTACACGACGCTCTTCCGATCTTATTGGGCACGGTGTCGCCATCTGATCGTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGAGGTTTGCAGCTATTTTATTTACAAGTATACATTTAACACAATGAAATAAACACTGATATACTGAAGCCTAGTTAATAGTAGTGTAACAATATGCATCATTTTGATGATTACATTATTTTAAACAACAAACTACACTGAAAAATTAATGCCGATAAAATTCTTGGTCATAATATTAAGAAATACAATATATAAATTGAAAATATGATTGCTTAAAATTTGAAAATGGAAGTGAACTCATTTGGACAGACTCAGAGTTAACATAATCTGAAGGGAGGGGAGCTCTGACCCAAATGATATCTTTCAGGTTAACAGAAGAAAAAAGAAGCATAGTTTATCTTCAAGGAGAACGGGCAGTTTGCTTCTTCAGGTAGAATATATTCCCAGTGTCCTCAGGCTTTGCAGCAGAATCACATCACCGAGCATGAAGACTTGCCTTGTGAAGCTGCCCCGTCCATTTTTTCTGCCTCCAA fwd pet047-9952 TATTGGGCACGGTGTC

Para cada linha, preciso usar o grep do valor da última coluna $5 no segundo campo $2. Então, preciso imprimir a mesma linha com uma coluna $6 adicional com o resultado do grep com uma condição:, if ($3 == rev)o $6 é o resultado do grep + 12 caracteres após o grep ou if ($3 == fwd)o resultado do grep + 12 caracteres antes do grep.

awk '$2~/$5/ {match($0, /$5/); if ($4=="rev") print substr($0, RSTART +12, RLENGTH + 12); else print substr($0, RSTART + 0, RLENGTH + 12) ;}' file

Os valores de $ 5 são necessários 16 caracteres e o padrão que procuro é sempre de 12 caracteres. Então, minha saída de $ 6 tem 28 caracteres.

Resultado esperado:

m64071_220512_054244/46858502/ccs TCTACACGACGCTCTTCCGATCTTATTGGGCACGGTGTCGCCATCTGATCGTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGAGGTTTGCAGCTATTTTATTTACAAGTATACATTTAACACAATGAAATAAACACTGATATACTGAAGCCTAGTTAATAGTAGTGTAACAATATGCATCATTTTGATGATTACATTATTTTAAACAACAAACTACACTGAAAAATTAATGCCGATAAAATTCTTGGTCATAATATTAAGAAATACAATATATAAATTGAAAATATGATTGCTTAAAATTTGAAAATGGAAGTGAACTCATTTGGACAGACTCAGAGTTAACATAATCTGAAGGGAGGGGAGCTCTGACCCAAATGATATCTTTCAGGTTAACAGAAGAAAAAAGAAGCATAGTTTATCTTCAAGGAGAACGGGCAGTTTGCTTCTTCAGGTA fwd pet047-9952 TATTGGGCACGGTGTC TATTGGGCACGGTGTCGCCATCTGATCG
m64071_220512_054244/52233509/ccs AGCTTTTTTGGAATCTTCTGCTAAAGAAAATCAGACTGCTGTGGATGTTTTTCGAAGGATAATTTTGGAGGCAGAAAAAATGGACGGGGCAGCTTCACAAGGCAAGTCTTCATGCTCGGTGATGTGATTCTGCTGCAAAGCCTGAGGACACTGGGAATATATTCTACCTGAAGAAGCAAACTGCCCGTTCTCCTTGAAGATAAACTATGCTTCTTTTTTCTTCTGTTAACCTGAAAGATATCATTTGGGTCAGAGCTCCCCTCCCTTCAGATTATGTTAACTCTGAGTCTGTCCAAATGAGTTCACTTCCATTTTCAAATTTTAAGCAATCATATTTTCAATTTATATATTGTATTTCTTAATATTATGACCAAGAATTTTATCGGCATTAATTTTTCAGTGTAGTTTGTTGTTTAAAATAATGTAATCATCAAAATGATGCATATTGTTACACTACTATTAACTAGGCTTCAGTATATCAGTGTTTATTTCATTGTGTTAAATGTATACTTGTAAATAAAATAGCTGCAAACCTCGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGATCAGATGGCGACACCGTGCCCAATAAGATCGGAAGAGCGTCGTGTAGA rev pet047-9952 GACACCGTGCCCAATA CGATCAGATGGCGACACCGTGCCCAATA
m64071_220512_054244/91226755/ccs TCTACACGACGCTCTTCCGATCTTATTGGGCACGGTGTCGCCATCTGATCGTTTTTTTTTTTTTTTTTTTTTTTTTTTTTCGAGGTTTGCAGCTATTTTATTTACAAGTATACATTTAACACAATGAAATAAACACTGATATACTGAAGCCTAGTTAATAGTAGTGTAACAATATGCATCATTTTGATGATTACATTATTTTAAACAACAAACTACACTGAAAAATTAATGCCGATAAAATTCTTGGTCATAATATTAAGAAATACAATATATAAATTGAAAATATGATTGCTTAAAATTTGAAAATGGAAGTGAACTCATTTGGACAGACTCAGAGTTAACATAATCTGAAGGGAGGGGAGCTCTGACCCAAATGATATCTTTCAGGTTAACAGAAGAAAAAAGAAGCATAGTTTATCTTCAAGGAGAACGGGCAGTTTGCTTCTTCAGGTAGAATATATTCCCAGTGTCCTCAGGCTTTGCAGCAGAATCACATCACCGAGCATGAAGACTTGCCTTGTGAAGCTGCCCCGTCCATTTTTTCTGCCTCCAA fwd pet047-9952 TATTGGGCACGGTGTC TATTGGGCACGGTGTCGCCATCTGATCG

Mas não consigo o que quero.

bash
  • 2 respostas
  • 54 Views
Martin Hope
pedro
Asked: 2023-10-30 21:38:31 +0800 CST

Analisando valores de coluna

  • 7

Eu tenho este arquivo test.txt:

gene 1:362273700-362275735
exon 1:362275166-362275246
exon 1:362274811-362275058
exon 1:362274230-362274685
gene 1:362279796-362287281
exon 1:362279796-362280179
exon 1:362280576-362280662
exon 1:362280858-362280958
exon 1:362281056-362281106

Eu preciso obter esta saída:

gene-1 1:362275166-362275246
gene-1 1:362274811-362275058
gene-1 1:362274230-362274685
gene-2 1:362279796-362280179
gene-2 1:362280576-362280662
gene-2 1:362280858-362280958
gene-2 1:362281056-362281106

-> Na verdade, preciso remover as linhas "gene" e substituir cada linha "exon" por "gene-X" (onde X começa com 1).

Eu luto com isso.

awk '$1~/exon/ {print $0 (/^exon/ ? "-" (++c) : "")}' test.txt

exon 1:362275166-362275246-1
exon 1:362274811-362275058-2
exon 1:362274230-362274685-3
exon 1:362279796-362280179-4
exon 1:362280576-362280662-5
exon 1:362280858-362280958-6
exon 1:362281056-362281106-7

awk '$1~/exon/ {$1=$1 "-" (++count[$1])}1' test.txt

gene 1:362273700-362275735
exon-1 1:362275166-362275246
exon-2 1:362274811-362275058
exon-3 1:362274230-362274685
gene 1:362279796-362287281
exon-4 1:362279796-362280179
exon-5 1:362280576-362280662
exon-6 1:362280858-362280958
exon-7 1:362281056-362281106
awk
  • 1 respostas
  • 43 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve