2017-09-19 4 views
1

Ich habe eine Datendatei mit 2 Spalten und 500 Zeilen in jeder Spalte. Um die fünfte Zeile der zweiten Spalte greife ich dies tun:awk bis zu einer bestimmten Zeile einer Datei ändern

awk 'FNR == 5 {print $2}' 

und zu modifizieren, zweite Spalte, sagen multiplizieren mit 0,8, das tue ich dies:

awk '{print $2*0.8}' inputfile 

Wenn ich zweite Spalte multiplizieren möchten, sagen wir von Zeile 1 bis Zeile 10, wie ändere ich den Befehl awk?

+0

[Bearbeiten] Ihre Frage zu kurz, testbar Sam enthalten ple Eingabe und erwartete Ausgabe. –

Antwort

2

sample.csv:

line1,1 
line2,4 
line3,1 
line4,1 
line5,5 
line6,1 
line7,1 
line8,1 
line9,1 
line10,1 
line11,1 
line12,1 

Ihre Beschreibung ist nicht ganz klar, basierend auf mein Verständnis:

1), wenn ein Wert aus Zeile multiplizieren 1- 10:

awk -F, 'BEGIN{OFS=","}{if(NR<=10){print $1,$2*0.8 }else{print $0}}' sample.csv 

Ausgabe:

line1,0.8 
line2,3.2 
line3,0.8 
line4,0.8 
line5,4 
line6,0.8 
line7,0.8 
line8,0.8 
line9,0.8 
line10,0.8 
line11,1 
line12,1 

2) multiplizieren alle zweiten Spalten von Zeile 1 - 10:

awk -F, 'BEGIN{OFS=","; result=1} (NR<=10){result *= $2} END{print result}' sample.csv 

output:

20 

-F, bedeutet, dass die Datei Separators Komma ist OFS="," ausgegeben Datei Separator if-else Prüfbedingungen

+0

Danke! Ihre Antwort 1) ist was ich gesucht habe. – user3389597

Verwandte Themen