it-swarm.com.de

Entfernen Sie unerwünschte Zeichen mit awk oder sed

Ich habe eine Befehlsausgabe, aus der ich die doppelten Anführungszeichen entfernen möchte. ".

Regex:

strings -a libAddressDoctor5.so |\
grep EngineVersion |
awk '{if(NR==2)print}' |
awk '{print$2}'

Ausgabe:

EngineVersion="5.2.5.624"

Ich möchte wissen, wie ich unerwünschte Zeichen mit awk oder sed entfernen kann.

28
abi1964

Benutze sed's Substitution: sed 's/"//g'

s/X/Y/ ersetzt X durch Y.

g bedeutet, dass alle Vorkommen ersetzt werden sollen, nicht nur das erste.

38
Piotr Praszmo

Mit awk können Sie Folgendes tun (ich habe auch einige Ihrer Rohrleitungen gekürzt):

strings -a libAddressDoctor5.so | awk '/EngineVersion/ { if(NR==2) { gsub("\"",""); print $2 } }'

Ich kann es für Sie nicht verifizieren, da ich Ihre genauen Eingaben nicht kenne, aber Folgendes funktioniert:

echo "Blah EngineVersion=\"123\"" | awk '/EngineVersion/ { gsub("\"",""); print $2 }'

Siehe auch diese Frage zum Entfernen von einfachen Anführungszeichen.

32
gregswift

tr kann präziser zum Entfernen von Zeichen sein als sed oder awk, insbesondere wenn Sie verschiedene Zeichen aus einer Zeichenfolge entfernen möchten.

Anführungszeichen entfernen:

echo '"Hi"' | tr -d \"
# Produces Hi without quotes

Verschiedene Arten von Klammern entfernen:

echo '[{Hi}]' | tr -d {}[]
# Produces Hi without brackets

-d steht für "löschen".

3
Matthias Braun