2017-05-29 4 views
-2

Ich möchte den Teil des Dateinamens mit AWK Befehl erhalten. Zum Beispiel ist mein Dateiname wie ABC_20100702001500.CSV. Ich möchte das YYYYMMDD-Format von meinem Dateinamen abrufen, um ein Verzeichnis zu erstellen. Ich versuchte mitFehler in Unix-Shell-Scripting

Aber es zeigt Fehler wie Syntaxfehler nahe unerwartetem Token `Name = awk '. Wie kann ich das Problem lösen? Bitte korrigieren Sie mich mit korrekter Syntax.

+1

Was ist '$ f'? Eine Shell-Variable? Das kann nicht in einfachen Anführungszeichen funktionieren. Wo ist die Eingabe für den ersten awk Befehl? Außerdem gibt es keinen Syntaxfehler in dem Teil, den Sie uns gezeigt haben. Was sind die benachbarten Zeilen? – Jens

+0

Gibt es eine Chance, dass Sie eine alte Shell verwenden, die die Befehlsersetzung mit '$ (cmd)' nicht versteht? Dann benutze Backticks. – Jens

+0

Führen Sie 'shellcheck' auf Ihrem Code aus und wenn Sie danach noch ein Problem haben, dann veröffentlichen Sie ein [mcve], das das Problem demonstriert. Was Sie gepostet haben, enthält einen Syntaxfehler (den nachgestellten '.') und hat andere Probleme, aber nichts, was zu einer Fehlermeldung führen würde, wie Sie es sagen. Und wenn Sie eine Fehlermeldung erhalten, posten Sie die eigentliche Fehlermeldung nicht etwas "Gefällt mir". –

Antwort

0

Sie können dies in Bash allein tun.

Gegeben:

$ st="ABC_20100702001500.CSV" 

Sie Parameter Expansion können die vorderen und hinteren Teil entfernen:

$ tmp="${st#*_}" 
$ echo "${tmp%.*}" 
20100702001500 

Oder Bash hat regex Fähigkeit auch:

$ [[ $st =~ ^[^_]*_([^.]+) ]] && echo ${BASH_REMATCH[1]} 
20100702001500 

Or Verwenden Sie sed, wenn Sie eine ältere Nicht-Bash-Shell haben:

$ echo "$st" | sed -E 's/^[^_]*_//; s/\..*$//' 
20100702001500 
+0

Während guter Rat, der Code, den die OP gepostet hat, kann die Fehlermeldung nicht produzieren, sie sagt, dass es so versucht, diesen Code zu reparieren oder zu verbessern, wird nur so weit gehen, mit dem Problem zu helfen, das sie wirklich hat. –

+1

@ EdMorton: Einverstanden. Bis klargestellt, dachte ich, Tipps zum Einstieg könnten helfen. – dawg

Verwandte Themen