
Ich möchte in einer bestimmten Spalte einer tabulatorgetrennten Datei ( awk
vermutlich mithilfe von) „CC“ durch „C“ und „AA“ durch „A“ ersetzen.
Antwort1
awk -F'\t' -vOFS='\t' '{ gsub("CC", "C", $1) ; gsub("AA", "A", $1) ; print }'
Ersetzen Sie $1
durch die Spalte, die Sie ändern möchten.
Antwort2
Wenn Sie keinen Zugriff auf hätten gsub()
, aber Zugriff auf haben split()
, könnten Sie das Äquivalent einfach folgendermaßen erstellen:
Angesichts der Eingabe
AA AA CC CC AA CC
das folgende awk
Skript
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;
}
würde die gewünschten Ergebnisse für die Felder 1, 3 und 5 liefern:
A AA C CC A CC
Auch ohne ist es möglich, wenn Sie die und Arrays im Block split()
fest codieren möchten .Fields
Replacements
BEGIN
Antwort3
Zum Suchen und Ersetzen in einem Feld verwenden Sie diesen Befehl:
sed 's/whatyouwanttofind/whatyouwanttoreplace/field#'
d. h. Sie geben dies wieder:
$echo -e "1are,2are,3are,4are\n5are,6are,7are,8are"
1are,2are,3are,4are
5are,6are,7are,8are
und du willst das tun
$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