hier ist also mein Code so weit:bash: Lesen von stdin OR Datei awk mit
awk '{++a[length()]} END{for (i in a) print i, a[i]}' <$1 | sort -n
, die die Längen der Zeilen aus einer Textdatei liest und gibt die Länge der Linie, und dann, wie viele Zeilen haben die gleiche Länge.
So Eingang:
hello
guys
hows
it
going
Will Ausgang:
2 1
4 2
5 2
ich es will auch in der Lage sein stdin, so kann ich den Befehl“./script Dateinamen ausgeführt werden. txt "und kann auch den Befehl mit Standardeingabe ausführen.
Gibt es eine Möglichkeit, dies mit einer while-Schleife zu tun? Ich habe versucht, etwas zu tun, ähnlich wie:
while read line
do
awk '{++a[length()]} END{for (i in a) print i, a[i]}' <${1:-/dev/stdin} | sort -n
done <${1:-/dev/stdin}
aber nichts scheint richtig ...
Irgendwelche Ideenarbeiten zu werden?
Wenn Sie uns gesagt, was statt, wie und erzielten Beispieldaten mit dem erwarteten Ausgang wir Ihnen möglicherweise in der Lage zu helfen: Das Folgende wird file1.txt, stdin und file2.txt in dieser Reihenfolge verarbeiten. Wenn Sie es selbst lösen wollen und gleichzeitig von stdin und einer Datei mit awk lesen wollen, verwenden Sie 'getline' für die Datei. Viel Glück. –
Wovon redest du? Sie lesen bereits von stdin! –