
我想在製表符分隔檔案的特定列中將“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()
如果您想在區塊中硬編碼Fields
和Replacements
數組也是可能的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