Manchmal benutze ich awk. Da es jedoch in ein paar Monaten ein wenig schnell geht, bekomme ich jedes Mal, wenn ich es benutze, "das? Wie benutze ich es?" Ich habe etwas getan, um im Internet nachzuschlagen, also werde ich diejenigen auflisten, die ich oft benutze.
Details zu jedem Artikel sind wie folgt
Angenommen, Sie haben eine Datei wie diese:
sample.txt
No data1 data2 data3
1 101 102 103
2 201 202 203
3 301 302 303
4 401 402 403
Bereiten Sie das awk-Skript wie folgt vor
sample.awk
{
print $1 " " $3
}
Geben Sie sample.txt an, nachdem Sie das Skript mit der Option -f vom Terminal aus angegeben haben.
$ awk -f sample.awk sample.txt
Die Ausgabe ist wie folgt.
No data2
1 102
2 202
3 302
4 402
Ausgabe
Enthält jedes Element in einer Zeile.
sample.txt
No data1 data2 data3 <----- $1 = "No", $2 = "data1", $3 = "data2", $4 = "data3"
1 101 102 103
2 201 202 203
3 301 302 303
4 401 402 403
Angenommen, Sie haben eine Datei wie diese:
sample.txt
No data1 data2 data3
1 101 102 103
2 201 202 203
3 301 302 303
4 401 402 403
Bereiten Sie das awk-Skript wie folgt vor
sample.awk
{
if(NR > 1){
sum1 += $2;
sum2 += $3;
sum3 += $4;
}
}
END {
print sum1 " " sum2 " " sum3;
}
Geben Sie sample.txt an, nachdem Sie das Skript mit der Option -f vom Terminal aus angegeben haben.
$ awk -f sample.awk sample.txt
Die Ausgabe ist wie folgt.
1004 1008 1012
Aktuelle Anzahl der Zeilen. In diesem Beispiel ist die erste Zeile der Titel, daher wird er ignoriert.
END
Verarbeitung beenden. Hier wird der Gesamtwert ausgegeben.
Angenommen, Sie haben eine Datei wie diese:
sample.txt
No data1 data2 data3
1 101 102 103 <----- 101 + 102 +Ich möchte 103 finden.
2 201 202 203
3 301 302 303
4 401 402 403
Bereiten Sie das awk-Skript wie folgt vor
sample.awk
{
sum = 0;
for(i=2; i<=NF; i++) {
sum += $i;
}
print sum;
}
Geben Sie sample.txt an, nachdem Sie das Skript mit der Option -f vom Terminal aus angegeben haben.
$ awk -f sample.awk sample.txt
Die Ausgabe ist wie folgt.
0
306
606
906
1206
Enthält die Anzahl der Elemente in jeder Zeile.
Angenommen, Sie haben eine Datei wie diese:
sample.txt
No,data1,data2,data3
1,101,102,103
2,201,202,203
3,301,302,303
4,401,402,403
Bereiten Sie das awk-Skript wie folgt vor
sample.awk
BEGIN {
FS = ",";
}
{
print $1 " " $3
}
Geben Sie sample.txt an, nachdem Sie das Skript mit der Option -f vom Terminal aus angegeben haben.
$ awk -f sample.awk sample.txt
Die Ausgabe ist wie folgt.
No data2
1 102
2 202
3 302
4 402
Trennposition jedes Elements. Der Standardwert ist leer.
START
Sie können den Startvorgang schreiben.
sample.txt
No,data1,data2,data3
1,101,"102,101",103
2,201,202,203
3,301,"302,101",303
4,401,402,403
Bereiten Sie das awk-Skript wie folgt vor
sample.awk
BEGIN {
FPAT = "([^,]+)|(\"[^\"]+\")"
}
{
print $1 " " $3
}
Geben Sie sample.txt an, nachdem Sie das Skript mit der Option -f vom Terminal aus angegeben haben.
$ awk -f sample.awk sample.txt
Die Ausgabe ist wie folgt.
No data2
1 "102,101"
2 202
3 "302,101"
4 402
Jedes Element kann durch einen regulären Ausdruck beschrieben werden.
Recommended Posts