В awk
ниже я пытаюсь cp
и paste
или обновить каждую соответствующую строку в f2
до $3
в f1
, если $2
из f1
находится в строке вf2
где-то.Всегда будет совпадение (обычно больше 1), и мои фактические данные будут намного больше (несколько сотен строк) как в f1
, так и f2
.Когда строка в f2
вставляется в $3
в f1
, значение в $1
из f1
добавляется к ней в конце строки с помощью /test/id/$1_raw.file_fixed.txt
.Значение $1
также от f1
.В основном это статический текст, за исключением того, что значение из $1
идет после третьего /
.Строки, начинающиеся с R_2019
, печатаются как есть и не используются для поиска совпадения.awk
действительно выполняется, но вывод не изменяется.Спасибо:).
Я также попробовал другой awk
(попытка 2), но безуспешно.Я вижу, что строка в f2
читается в $id
, но я не могу найти частичное совпадение из f1
.Спасибо:).
f1
xyxy_0268 0000-yyyy
xyxy_0270 1111-xxxx
R_0000_00_02_00_45_32_xxxx_x0-0000-100-x0.0_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
f2
/path/to/the/xxx/data/0000-yyyy_v1_0000-yyyy_RNA_v1/190326-Control_v1_20190328071906449
/path/to/the/xxx/data/00-0000_xxxx-03_v1/00-0000_xxxx-03_v1_20190322115521953
/path/to/the/xxx/data/1111-xxxx-03_v1/1111-xxxx-03_v1_20190322115521953
желательно
xyxy_0268 0000-yyyy /path/to/the/xxx/data/0000-yyyy_v1_0000-yyyy_RNA_v1/190326-Control_v1_20190328071906449/test/id/xyxy_0268_raw.file_fixed.txt
xyxy_0270 1111-xxxx /path/to/the/xxx/data/1111-xxxx-03_v1/1111-xxxx-03_v1_20190322115521953/test/id/xyxy_0270_raw.file_fixed.txt
R_0000_00_02_00_45_32_xxxx_x0-0000-100-x0.0_xxxx_xxxx_xxxx_xxxx_xxxx_xxxx
awk
awk 'NR==FNR {for(i=1; i<=NF; i++) id[$i]=$1; next} $2 in id{$3=id[$i] "/test/id/" $1 "_raw.file_fixed.txt"}1' f2 f1
awk 'NR==FNR {for(i=1; i<=NF; i++) id[$i]=$1; next} $2 in id{$3=id/$2/ "/test/id/" $1 "_raw.file_fixed.txt"}1' f2 f1