[LINUX] Hinweis zu awk

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.

Sie können es nur verwenden, indem Sie dies wissen

Details zu jedem Artikel sind wie folgt

Super einfach

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  

Kommentar

print

Ausgabe

Variablen $ 1 bis $ ...

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

Holen Sie sich die Summe für jede Spalte

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

Kommentar

Variable NR

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.

Ich möchte die Summe für jede Zeile erhalten.

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

Kommentar

Variable NF

Enthält die Anzahl der Elemente in jeder Zeile.

Dateibegrenzer sind Kommas anstelle von Leerzeichen

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

Kommentar

Variable FS

Trennposition jedes Elements. Der Standardwert ist leer.

START

Sie können den Startvorgang schreiben.

Dateibegrenzer sind Kommas, keine Leerzeichen. Außerdem enthält jedes Element ein Komma.

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

Kommentar

Variable FPAT

Jedes Element kann durch einen regulären Ausdruck beschrieben werden.

Recommended Posts

Hinweis zu awk
Hinweis zu Zeigern (Go)
Ein Hinweis zu mprotect (2)
Memo
Memo
Ein Hinweis zu KornShell (ksh)
Ein Hinweis zur TensorFlow-Einführung
Ein Hinweis zu [Python] __debug__
Hinweis zu get_scorer von sklearn
Ein Hinweis zu Mock (Python-Mock-Bibliothek)
Django Note 4
Über LangID
Über CAGR
Über Tugenden
Über Python-Apt
pyenv note
Über die Erlaubnis
Über sklearn.preprocessing.Imputer
Über Gunicorn
Informationen zu den Anforderungen.txt
Über das Gebietsschema
Über Achse = 0, Achse = 1
Hinweis: Python
Über Numpy
Über pip
Über numpy.newaxis
Python-Notiz
Über Endian
Über Linux
Über den Import
Django Note 1
direnv note
Über Linux
Django Note 3
Django Note 2
Über Linux
Über cv2.imread
Über _ und __
Über wxPython
[Hinweis] RepresenterError
Ein Memo, dass ich das Pyramid Tutorial ausprobiert habe
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Datenanalyse in Python: Ein Hinweis zu line_profiler
Ein Hinweis zur neuen Stilbasisklasse
Modifikatoren zur Überprüfung von Memos mit MaxPlus