
タブ区切りファイルの特定の列で、「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
1 つのフィールドで検索と置換を行うには、次のコマンドを使用します。
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