2017-01-04 2 views
0

Dies ist, was ich bisher habe, versuchte mehrere Möglichkeiten, aber kann es nicht richtig bekommen. Mein Ziel ist es, den Eingang zu sanieren Probleme zu verhindern, während zu MySQL von Textdatei EingabeSo fliehen einzelne Anführungszeichen mit awk in einem Bash-Skript

cat 'file.txt' | awk '{gsub(/'"'"'/, '.') ; print $0}' > 'file_sanitized.txt' 
+2

Duplizieren von http://stackoverflow.com/questions/2332917/awk-to-replace-single-quote – Iceman

+0

Als Randbemerkung, sollten Sie in der Regel bevorzugen 'awk

0

Sie haben verwendet falsch zitiert:

awk '{gsub(/'"'"'/, "."); print}' 
+0

Sie können das nicht, wenn Ihr Skript in einer Datei ist, die mit 'awk -f script' aufgerufen wird. Wenn Sie also mit einem Liner beginnen, der von der Kommandozeile aus aufgerufen wird und in einer Datei gespeichert werden soll ändere überall wo du das gemacht hast. Persönlich benutze ich nur '\ 047'. –

0

Da Ihnen angeforderte hier eine Lösung mit awk "wie Apostroph mit awk zu entkommen":

awk '{ gsub("\x27", ".");print $0}' 

wo \x27 ist die Escape-Sequenz Darstellung der hexadezimale Wert 27 (ein einfaches Zitat).

Eine Liste aller Escape-Sequenzen sehen https://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences.html

+0

Nein, verwenden Sie NICHT den Hexadezimalwert '\ x27', verwenden Sie stattdessen oktal' \ 047'. Siehe http://stackoverflow.com/a/41474373/1745001. –

1

Was Sie wollen, ist:

awk '{gsub(/\047/,".")}1' file 

Siehe http://awk.freeshell.org/PrintASingleQuote.

+0

Wenn das OP ein Zeichen durch ein anderes ersetzen will, ist 'tr' das, was er/sie will. – hek2mgl

+0

Die Frage, die gestellt wurde, war 'Wie man einzelnes Anführungszeichen mit awk in einem Bashskript entkommt', nicht' Wie man ein Zeichen durch ein anderes in einem Shellskript ersetzt'. Ja, das minimale Beispiel, das gepostet wurde, verwendet diese Funktionalität im Zusammenhang mit dem Ändern von '' '' '' '' ', aber es ist eine umfassendere Frage. –

Verwandte Themen