Gegeben: Ein Datensatz enthält 40 Spalten. Ich möchte die 35. Spalte ersetzen, sodass die 35. Spalte durch den Inhalt der 35. Spalte und ein "$" -Symbol ersetzt wird. Was mir in den Sinn kam, ist so etwas wie:
awk '{print $1" "$2" "...$35"$ "$36...$40}'
Es funktioniert aber, weil es nicht machbar ist, wenn die Anzahl der Spalten so groß wie 10k ist. Ich brauche einen besseren Weg, um das zu tun.
linux
text-processing
awk
replace
Marcus Thornton
quelle
quelle
sed 's/./$&/35'
$
oder ohne Zeichen vorangestellt werden . Die obige Angabe sollte das 35. Vorkommen einer beliebigen Anzahl von Begrenzungszeichen - mit anderen Worten das 35. Feld - mit dem$
Zeichen verbinden, unabhängig davon, wie Zeichen in jedem Feld stehen.Um den originalen Field-Seprator zu reservieren, habe ich das gemacht. Die Spalte, die ich ausblenden wollte, war die Nummer $ 12.
Mit
gawk -i
, wenn Sie es haben, können Sie die Datei an Ort und Stelle bearbeiten.quelle
Bei Problemen mit den "genehmigten" Antworten würde dies mehr als nur die erste Spalte in der Datei ersetzen. Ich benutze diesen generischen Befehl:
Woher:
[column]
= Spalte, die Sie ändern möchten, beginnend mit 1 (nicht mit 0)[replace]
= Text, den Sie ersetzen möchtenquelle
awk '$1=mktime($1)' FS=, OFS=, oldfile > newfile
... tauschte in wenigen Sekunden eine Million Zeitstempel aus !! :)