Wie kann ich mit dem Befehl grep oder awk im Linux-Terminal eine inkrementelle Ganzzahlzeile in eine Textdatei einfügen?

Wie kann ich mit dem Befehl grep oder awk im Linux-Terminal eine inkrementelle Ganzzahlzeile in eine Textdatei einfügen?

Ich habe eine Textdatei mit über 10 Millionen Zeilen. Die Datei sieht wie folgt aus:

1902400023
1902400029
1902400031
1902400032

Ich wollte eine Überschrift, eine fortlaufende ID-Nummer und einen konstanten SHORTCODE hinzufügen. Erwartetes Ergebnis:

ID,MSISDN,SHORTCODE
1,1902400023,1
2,1902400029,1
3,1902400031,1
4,1902400032,1

Und dies wird bis zum Dateiende fortgesetzt und in eine andere Datei geschrieben.

Antwort1

Ich vermute du brauchst den awkCode wie folgt

awk 'BEGIN { OFS = ","; header="ID,MSISDN,SHORTCODE" } NR == 1 { print header } 
           { $2 = $0; $1 = NR; $3 = 1; }1' file

In der BEGINKlausel setzen wir den Ausgabefeldtrenner auf den ,Operator und initialisieren die Header-Zeichenfolge. Wenn die Datei verarbeitet wird, fügen wir in der ersten Zeile den Header ein und ab den nachfolgenden Zeilen fügen wir die Zeilen ein, wie Sie es im OP gezeigt haben. NRist eine spezielle Variable im Kontext, awkdie die Zeilennummer verfolgt, die wir für Ihren inkrementellen Zähler verwenden.

Antwort2

Hier können Sie einen Awk-Befehl wie den folgenden verwenden, um Zeilennummern hinzuzufügen:

$ awk '{printf("%d:%s\n", NR, $0)}' millionlinetextfile > linenumberedfile

verwandte Informationen