Como criar uma pasta de uma string em um arquivo?

0

Eu tenho um script que faz algumas conversões. Para poder salvar os resultados em uma pasta específica eu tenho um arquivo (arquivo csv) que o script está lendo e de lá ele pega uma string (eu faço isso agora com echo / sed / awk)

é assim que eu estou tentando fazer isso:

# creating output directory
PNAME=$( echo -n "$(sed '4q;d' ${FOLDER}/SampleSheet.csv| sed  -e 's/Experiment Name,//')")
echo $PNAME

mkdir /fs/pool/pool-bcfngs/fastq_files/${PNAME}/

O problema é que com este comando eu sempre adiciono o nome da pasta e não consigo criar subpastas automaticamente.

por exemplo. a string que estou tentando encontrar é essa

 sed '4q;d' 171213_NB500982_0018_AHH7CNAFXX/SampleSheet.csv
 Experiment Name,P030

e os resultados que obtenho são

P030^M

mas com a nova linha inserida. Existe uma maneira de extrair o termo P030 sem adicionar o P030 à variável?

    
por Assa Yeroslaviz 19.01.2018 / 17:07

1 resposta

1

A \r é a notação C para o retorno de carro, que aparece nos finais de linha CRLF no estilo Windows. É considerado um personagem regular pelas ferramentas usuais de processamento de texto em Unixes.

Então, do ponto de vista de sed s, a linha em questão é algo assim (se eu acertei direito):

Experiment Name,P030\r

Você pode executar o arquivo por meio de tr -d '\r' ou dos2unix ou sed -e 's/\r$//' para remover os CRs de cada linha. Ou o mesmo para a string resultante. Ou lidar com isso, alterando a expressão sed que pega a string que você deseja. Isso também funcionaria com qualquer outro lixo na linha.

por exemplo. isso removeria tudo da linha, além dos alfanuméricos seguindo o rótulo fixo:

| sed -e 's/.*Experiment Name,\([[:alnum:]]*\).*//'

( \(..\) é usado para salvar ("captura") parte da string correspondente, e refere-se ao primeiro como um grupo.)

    
por 19.01.2018 / 17:45