2016-04-21 2 views
1

Ich habe eine Textdatei in folgendem Format:Updating Wert unter bestimmten Spalte in der Datei mit Hilfe von Shell

# this is the comment 
# And this is also a comment 

FIELD1 
COL11  COL12  COL13  
5   10   15  

FIELD2 
COL21  COL22  COL23  COL24  
12   34   45   55 

....... 
....... 

Ich mag den Wert unter COL24 erwähnt aktualisieren (55) auf einen anderen Wert läßt 100 sagen. Ich kann diesen Wert mit der folgenden Shell lesen:

grep -A 1 COL21 /Dir/To/File/filename.txt | sed -e '1 d' | awk -F ' ' '{print $4} 

Aber wie aktualisieren wir den Wert?

+0

Ist es immer der 4. Spalte oder unterschiedlich sein können? – anubhava

+0

Nein, es ist immer 4. Spalte; – Shasha99

Antwort

2

Sie können diesen awk Befehl:

awk '/FIELD2/{r=NR+2} NR==r{$4=100} 1' OFS='\t' file 
+0

Dies aktualisiert den Wert. aber es aktualisiert auch die vierte Spalte der zweiten Zeile der Datei. Der Ausgang nach dem Ausführen des Befehls ist: # dies ist der Kommentar # Und dieser ** 100 ** auch ein Kommentar FIELD1 COL11 COL12 COL13 FIELD2 COL21 COL22 COL23 COL24 12 34 45 ** 100 ** ....... ....... – Shasha99

+1

Vielen Dank. Es hat funktioniert :) – Shasha99

+1

Ja, das ist zweifellos sauberer. Danke und bearbeitet. – anubhava

Verwandte Themen