conteúdo de pwd e que falhou com sed para ser substituído [duplicado]

0

Eu tenho um arquivo com o seguinte conteúdo:

BWA='/software/bwa/bwa-0.7.12/bwa'
SAMTOOLS='/software/samtools/samtools-1.3.1/samtools'

As ferramentas acima estão no meu computador:

  • qual bwa = > / work / waterhouse_team / miniconda2 / envs / arima / bin / bwa e
  • pwd / hic-fq = > / scratch / waterhouse_team / benth / dbg2olc-40x / hic-fq

Em seguida, usei esses dois comandos sed :

sed -i.bak 's|/software/bwa/bwa-0.7.12/bwa|$(which bwa)|g' mapping_arima.sh
sed -i.bak 's|/software/samtools/samtools-1.3.1/samtools|$(which samtools)|g' mapping_arima.sh

Infelizmente, como resultado, recebi:

BWA='$(which bwa)'
IN_DIR='$('pwd')/hic-fq'

Como preciso alterar os comandos sed para obter:

  • BWA = '/ work / waterhouse_team / miniconda2 / envs / arima / bin / bwa' e
  • IN_DIR = / scratch / waterhouse_team / benth / dbg2olc-40x / hic-fq

Obrigado antecipadamente

    
por user977828 02.10.2018 / 01:15

2 respostas

1

Você pode tentar esses comandos:

sed -ri.bak "s#software/bwa/bwa-0.7.12/bwa#'which bwa'#g" mapping_arima.sh
sed -ri.bak "s#software/samtools/samtools-1.3.1/samtools#'which samtools'#g" mapping_arima.sh
    
por 02.10.2018 / 01:45
2

As substituições de comandos $(…) não são expandidas dentro de aspas simples.

Você pode tentar:

sed -i.bak "s|/software/bwa/bwa-0.7.12/bwa|$(which bwa)|g" mapping_arima.sh
sed -i.bak "s|/software/samtools/samtools-1.3.1/samtools|$(which samtools)|g" mapping_arima.sh

Mas, se estiver em um script, use:

#!/bin/sh

file=mapping_arima.sh

from01='/software/bwa/bwa-0.7.12/bwa'
to01=$(which bwa)

from02='/software/samtools/samtools-1.3.1/samtools'
to02=$(which samtools)

sed -i.bak "s|$from01|$to01|g" "$file"
sed -i.bak "s|$from02|$to02|g" "$file"
    
por 02.10.2018 / 01:45

Tags