`awk -F_" "` не удаляет все перед подчеркиванием в каждой строке

321
man on laptop

Я использую Mac. У меня есть каталог, в котором файлы имеют такие имена, как ABC_2016-06-08_09-23.csv. Я хочу извлечь часть имени каждого файла перед первым подчеркиванием. Я пытался сделать, ls | awk -F_ ""но я вернул полные имена файлов. Что я делаю неправильно?

1

1 ответ на вопрос

1
fedorqui

Проблема здесь в том, что вы используете двойные кавычки вместо одинарных, поэтому правильное значение таково:

awk -F_ '' 

Когда вы используете двойные кавычки, оболочка расширяется $1до того, что определено. Если это ничто, оно расширяется в ничто, и, следовательно, вы получаете простое, которое печатает всю строку.

$ echo "$ 1"

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

И посмотрите, как мы можем сделать это полезным в некотором роде:

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