awk для замены столбца

Вы можете просто передать это наtr(1):

date -d "20170711" +"%b" | tr '[:lower:]' '[:upper:]'

0
18.09.2019, 14:55
1 ответ

Используя ваш file1.txt, как указано выше, и отредактированную версию вашего file2.txt(, так что в файле 2.txt есть несколько входных строк, где $5 находится в файле 1.txt):

AL157931.1      13      23551994        23552136        ENSG00000237491
HMGA1P6 13      23708313        23708703        ENSG00000230092
RNY3P4  13      23726725        23726825        ENSG00000207157

Читая file2.txt до file1.txt, мы можем получить следующий результат:

$ awk 'BEGIN {FS=OFS="\t"}
       NR==FNR {a[$5]=$1; next};
       $1 in a {$1=a[$1];print}' file2.txt file1.txt 
AL157931.1      1       714150  745440  2       1       143562
HMGA1P6 1       736259  745541  2       1       143562

Ключом к тому, как это работает, является понимание того, что мы хотим построить ассоциативный массив, в котором ключами являются $5 из файла2, а значениями являются $1 из того же файла.

Затем, когда мы перебираем файл1, проверяем, является ли $1 ключом в массиве. Если это так, замените $1 совпадающим значением (, то есть соответствующим $1 из файла2 ), и напечатайте строку.

0
28.01.2020, 03:16

Теги

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