Ich kann definitiv als sed/awk Neuling betrachtet werden. Ich habe daran gearbeitet, einen mehrstufigen Filter ohne Erfolg zu machen. Jedes Segment liefert Ergebnisse, wenn es selbstständig läuft, aber wenn ich sie zusammenkette, bekomme ich nichts. Ich habe sed | awk, awk | sed, sed | sed, awk | awk ausprobiert. Sie alle versagen, also nehme ich an, dass es jedem außer mir bekannt ist.Rohrleitungen sed | awk oder awk | sed
Die Daten sind mehrzeilige Textblöcke, wobei jeder Block als Datensatz behandelt werden kann (daher der Begrenzer ">"). Nachdem wir nur auf die ADV_NONCONN-Blöcke gefiltert haben, möchte ich dann den Textblock auf nur die Zeilen filtern, die "bdaddr" oder "RSSI" enthalten. Soweit ich weiß, müsste ich dafür eine separate Operation durchführen.
sudo hcidump | awk 'BEGIN {RS=">"} /ADV_NONCONN/' | sed -n -e "/bdaddr/p" -e "/RSSI/p" > log.txt
hcidump Ausgangsabtastwert (ein "record"):
HCI Event: LE Meta Event (0x3e) plen 43
LE Advertising Report
ADV_NONCONN_IND - Non connectable undirected advertising (3)
bdaddr 0C:F3:EE:0D:70:89 (Public)
Flags: 0x06
Unknown type 0xff with 26 bytes data
RSSI: -62
Ausführen der inversen (der Abschnitt Sed ersten awk dann) ergibt gleiche leere Menge Ergebnisse. Was für eine einfache Sache habe ich verpasst?
Es ist fast nie nötig Rohr 'awk' zu' sed', da 'awk' die meisten Dinge tun kann, dass' sed' tun können und die awk-Syntax ist normalerweise einfacher zu verstehen. – Barmar
Erlauben Sie mir, Ihnen ein Feedback zu geben: Sowohl Ihre Frage als auch Ihre eigene Antwort sind bis zur Ablenkung gesprächig - bitte überlegen Sie, sie prägnanter und fokussierter zu machen. – mklement0
Auch einige Standardtipps für Neuankömmlinge: Wenn eine Antwort Ihr Problem löst, akzeptieren Sie es, indem Sie auf das große Häkchen (✓) daneben klicken und es optional up-votieren (up-voting benötigt mindestens 15 Reputationspunkte). Wenn Sie andere Antworten hilfreich fanden, stimmen Sie sie bitte ab. Akzeptieren und Up-Voting hilft zukünftigen Lesern. Bitte lesen Sie [den entsprechenden Artikel in der Hilfe] (http://stackoverflow.com/help/someone-answers). Wenn Ihre Frage noch nicht vollständig beantwortet wurde, geben Sie bitte Feedback. Wenn Sie denken, dass Sie selbst die beste Lösung gefunden haben, posten Sie sie als Antwort und akzeptieren Sie sie selbst. – mklement0