將特定列中的一個測試字串替換為另一個測試字串

將特定列中的一個測試字串替換為另一個測試字串

我想在製表符分隔檔案的特定列中將“CC”替換為“C”,將“AA”替換為 A”(awk可能使用)。

答案1

awk -F'\t' -vOFS='\t' '{ gsub("CC", "C", $1) ; gsub("AA", "A", $1) ; print }'

替換$1為您要修改的列。

答案2

如果您無權訪問gsub(),但您確實可以訪問split(),則可以這樣建立等效項:

給定輸入

AA      AA      CC      CC      AA      CC

以下awk腳本

BEGIN {
    OFS = "\t";
    split("1 3 5", Fields);
    split("A C", Replacements);
}
{
    for (i in Fields) {
        for (j in Replacements) {
            Replace = Replacements[j];
            sub(Replace Replace, Replace, $Fields[i]);
        }
    }
    print;
}

將為欄位 1、3 和 5 產生所需的結果:

A       AA      C       CC      A       CC

即使沒有,split()如果您想在區塊中硬編碼FieldsReplacements數組也是可能的BEGIN

答案3

要在一個欄位中尋找和替換,請使用以下命令:

sed 's/whatyouwanttofind/whatyouwanttoreplace/field#'

即你回應這個:

$echo -e "1are,2are,3are,4are\n5are,6are,7are,8are"

1are,2are,3are,4are

5are,6are,7are,8are

你想要這樣做

$echo -e "1are,2are,3are,4are\n5are,6are,7are,8are" |  sed 's/are/arrr/2'

1are,2**arrr**,3are,4are

5are,6**arrr**,7are,8are

相關內容