`awk -F_" "` entfernt nicht alles vor dem Unterstrich in jeder Zeile

362
man on laptop

Ich benutze Mac. Ich habe ein Verzeichnis, in dem die Dateien Namen haben ABC_2016-06-08_09-23.csv. Ich möchte den Teil jedes Dateinamens vor dem ersten Unterstrich extrahieren. Ich habe es versucht, ls | awk -F_ ""aber ich habe die vollständigen Dateinamen zurückbekommen. Was mache ich falsch?

1

1 Antwort auf die Frage

1
fedorqui

Das Problem hierbei ist, dass Sie doppelte Anführungszeichen anstelle von einfachen Anführungszeichen verwenden.

awk -F_ '' 

Wenn Sie doppelte Anführungszeichen verwenden, wird die Shell $1auf das Definierte erweitert. Wenn es nichts ist, wird es zu nichts erweitert und daher erhalten Sie eine einfache , die die gesamte Zeile druckt.

$ echo "$ 1"

$ echo "hello_you" | awk -F_ "" hello_you $ echo "hello_you" | awk -F_ '' hello 

Und sehen, wie wir es auf irgendeine Weise nützlich machen können:

$ myvar="ueee" $ echo "hello_you" | awk -F_ "" 23