Wie führe ich einen Befehl für jede Schleife in awk aus?

7

Ich benutze awk, um einen binären Stream zu teilen, und ich kann jeden Teil in eine for-Schleife wie diese bringen.

for(i=1;i<=NF;i++)

Ich möchte nicht jedes Feld in Text oder Argumente konvertieren, sondern es einfach direkt an einen Befehl übergeben.

Ich versuche so etwas zu finden,

for(i=1;i<=NF;i++) system("decode")

aber das funktioniert offensichtlich nicht. Dekodierung erhält keine Eingabe.

Wie bekomme ich die Decodierung, um jedes Feld in der Schleife zu empfangen?

    
akula1001 19.08.2017, 16:49
quelle

2 Antworten

3

Funktioniert das nicht für Sie?

%Vor%

Er sendet jedes Feld (oder Byte in Ihrem Fall) an eine Pipe, die mit dem Programm "decode" verbunden ist.

Schließen Sie danach die "decode" -Rohre, um eine Bereinigung aller Daten auf dieser Pipe zu erzwingen.

Sie können mehr über gawk redirection auf Ссылка

lesen

Wenn Sie "decode" für jedes einzelne Byte ausführen möchten, schließen Sie einfach die Pipe in jeder Iteration:

%Vor%     
valrog 19.08.2017, 18:48
quelle
1

Versuchen Sie das zu tun?

%Vor%

Dies sollte jedes Feld, das in der awk-Variablen $i enthalten ist, an das externe Programm decode übergeben. Beachten Sie, dass die Variable außerhalb der Anführungszeichen für "decode " liegt oder dass sie von der Shell anstelle von awk interpretiert wird.

    
Qeole 21.08.2017 20:27
quelle

Tags und Links