Я нашел решение проблемы. 1. Я создал новую пару ключей shh под пользователем jenkins. 2. Добавил ключ .pub на удаленный сервер. При выполнении ssh с сервера jenkins используется только что созданный закрытый ключ. Теперь и ssh, и scp работают как часть шага сборки. Спасибо
$ 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
Perlрешение:
perl -pe 's/\.\d+//
\.\d+
соответствует первому '.' за которым следует 1 или более цифр.s/шаблон//
удалит выбранный паттерн.просто сделай:
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/'
Мы можем сопоставить версию «стабильного» ID человеческого гена Ensembl с расширенным регулярным выражением ENSG[0-9]{11}\.[0-9]+
.
Использование сsed
:
$ sed -r 's/(ENSG[0-9]{11})\.[0-9]+/\1/' file.in >file.out
Это не зависит от разделителя между столбцами или от того, где в строке встречается идентификатор.
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
В 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}"