Удаление расширения только из первого столбца

Я нашел решение проблемы. 1. Я создал новую пару ключей shh под пользователем jenkins. 2. Добавил ключ .pub на удаленный сервер. При выполнении ssh с сервера jenkins используется только что созданный закрытый ключ. Теперь и ssh, и scp работают как часть шага сборки. Спасибо

3
26.08.2017, 01:16
6 ответов
$ awk -F'[\t.]' -v OFS='\t' '{print $1,$3 "." $4}'
ENSG00000242268 0.07563
ENSG00000270112 0.09976
ENSG00000167578 4.38608
ENSG00000273842 0.0
ENSG00000078237 4.08856
0
27.01.2020, 21:08

Perlрешение:

perl -pe 's/\.\d+//

  • \.\d+соответствует первому '.' за которым следует 1 или более цифр.
  • s/шаблон//удалит выбранный паттерн.
0
27.01.2020, 21:08

просто сделай:

sed 's/\(.[0-9]\+\) / /' 

он будет соответствовать только первой десятичной части и удалять ее.

на вашем образце:

echo "ENSG00000242268.2    0.07563
>  ENSG00000270112.3    0.09976
>  ENSG00000167578.15   4.38608
>  ENSG00000273842.1    0.0
>  ENSG00000078237.5    4.08856" | sed 's/\(.[0-9]\+\) / /'
ENSG00000242268    0.07563
ENSG00000270112    0.09976
ENSG00000167578   4.38608

отредактируйте, если у вас есть вкладки, попробуйте это:

sed 's/\(.[0-9]\+\)\( \|\t\)\2/' 
5
27.01.2020, 21:08

Мы можем сопоставить версию «стабильного» ID человеческого гена Ensembl с расширенным регулярным выражением ENSG[0-9]{11}\.[0-9]+.

Использование сsed:

$ sed -r 's/(ENSG[0-9]{11})\.[0-9]+/\1/' file.in >file.out

Это не зависит от разделителя между столбцами или от того, где в строке встречается идентификатор.

4
27.01.2020, 21:08

awkрешение:

awk -F'\t' '{sub(/\..+$/,"",$1)}1' OFS='\t' file
  • -F'\t'-разделитель полей

  • sub(/\..+$/,"",$1)-сразу удаляет .со следующими символами из 1-го поля

Выход:

ENSG00000242268 0.07563
ENSG00000270112 0.09976
ENSG00000167578 4.38608
ENSG00000273842 0.0
ENSG00000078237 4.08856

Или с помощью простогоsedподхода:

sed 's/\.[0-9]*//' file
5
27.01.2020, 21:08

В Bash используется удаление подстроки:

#!/usr/bin/env bash

file='file.txt'

while read -r i; do

  a=$( <<< "${i}" cut -d $'\t' -f 1 )
  a=${a%.*}
  b=$( <<< "${i}" cut -d $'\t' -f 2- )

  printf '%s\t%s\n' "${a}" "${b}"

done < "${file}"
0
27.01.2020, 21:08

Теги

Похожие вопросы