просто сделай:
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/'
step1:
for i in "emp_id.txt" "beforesal.txt" "nowsal.txt"; do perl -pne "s/ /\n/g" $i >> "$i"fi; done
step2:
paste emp_id.txtfi beforesal.txtfi nowsal.txtfi
выход
emp before now
id sal sal
----- ----- ----
1 23 25
4 56 60
7 78 82
10 97 99
13 105 109
16 123 124
19 145 150
определите небольшую функцию, которая преобразует файл в столбец:
f2c() { tr -s '[:blank:]' '\n' < "$1"; }
затем используйте paste
для объединения столбцов, обрабатывайте замены в качестве аргументов файла для вставки и column
для красивого вывода.
paste <(f2c 'emp id.txt') <(f2c 'before sal.txt') <(f2c 'now sal.txt') | column -t
emp before now
id sal sal
----- ----- ----
1 23 25
4 56 60
7 78 82
10 97 99
13 105 109
16 123 124
19 145 150
заданнаяawk
команда на самом деле очень близка к тому, что вы ожидаете в качестве вывода, но да, разбить заголовок на отдельную строку из-за пробелов (это не будет проблемой, если ваши входные файлы были разделены Tab или что-то еще ), во всяком случае, я не понял, как заголовок будет печатать в самых последних строках, возможно, разные awk
версии имели разные параметры сортировки по умолчанию; например, на PROCINFO["sorted_in"]="@val_num_desc"
ваш вывод будет похож на приведенный ниже (, но вы все еще не знаете, как числа отсортированы по возрастанию в вашем ожидаемом результате):
19 145 150
16 123 124
13 105 109
10 97 99
7 78 82
4 56 60
1 23 25
id sal sal
emp before now
----- ----- ----
давайте попробуем с приведенной ниже модифицированной командой и посмотрим, действительно ли это то, что вам нужно, или близко к тому, чего вы действительно ожидаете:
awk '{ $2=$1"_"$2; $1="";
for (i=2; i<=NF; i++) RtoC[i]= (RtoC[i]? RtoC[i] "\t" $i: $i) }
END{ PROCINFO["sorted_in"]="@unsorted";
for (i in RtoC) print RtoC[i];
}' emp.txt before.txt new.txt |column -t
выход:
emp_id before_sal now_sal
----- ----- ----
1 23 25
4 56 60
7 78 82
10 97 99
13 105 109
16 123 124
19 145 150