温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - Appending a string to all elements of cells in a column using awk or bash
awk bash

其他 - 使用awk或bash将字符串附加到列中单元格的所有元素

发布于 2020-04-08 00:22:45

我有以下文本文件:

$ cat file.txt
# file;GYPA;Boston
Josh      81-62    20
Mike      72-27    1;42;53
Allie     71-27    24;12

我想通过以下方式将GYPA添加到第三列的每个元素:

GYPA:20
GYPA:1;GYPA:42;GYPA:53
GYPA:24;GYPA:12

到目前为止,我有

猫猫

NR==1 {
    FS=";"; Add=$2
}

{
    FS="\t"; split($3,a,";");
    for (i in a) {
        print Add":"a[i] 
    }

}

数组部分不起作用。

查看更多

提问者
user171558
被浏览
53
Ed Morton 2020-02-01 06:38

假设&您要添加的前缀字符串中没有反向引用(例如)或转义字符:

$ awk -F';' 'NR==1{add=$2":"; FS=" "; next} {gsub(/(^|;)/,"&"add,$3); print $3}' file
GYPA:20
GYPA:1;GYPA:42;GYPA:53
GYPA:24;GYPA:12