Ich möchte jede Zahl in Klammern "[]" finden und alle ihre Erscheinungen (Zeilennummern) in Textdatei drucken .Ubuntu, Bash, awk, reguläre Ausdrücke -> finde alle [Zahlen] in der Textdatei und drucke sie
Zum Beispiel habe ich Textdatei wie folgt aus:
texttexttext[1] textetxtetete[2]
[1]textextetetete[3]
texttexttext[2]
texttexttext
text[3]text[1]
Und der Ausgang dieses sein sollte:
[1] = lines : 1 2 5
[2] = lines : 1 3
[3] = lines : 2 5
Das ist, was ich bisher getan habe:
#!/bin/bash
cat $1 | awk -F'[/[/] ]' '{ #[] as file separators
for (i=1;i<=NF;i++) #for every part of line
{
if ($i ~ "[0-9]+") #if its number
{
#save it somehow
}
}}'
Das Skript findet die gewünschten Zahlen, aber jetzt möchte ich es speichern, und seine Zeilennummer (NR-Variable) auf eine einfache Art und Weise. Soll ich etwas mit Arrays ausprobieren? Ich würde mindestens zweidimensionale Arrays benötigen, aber sie sind ein bisschen problematisch in bash. Gibt es einen besseren Weg?
'awk' nicht wahr mehrdimensionale Arrays unterstützt, aber' gawk' tut (wenn auch mit ein paar Knicke). Wenn Sie nicht mehrere Befehle aneinanderreihen wollen, müssen Sie etwas mit vernünftiger mehrdimensionaler Array-Unterstützung verwenden. –