1

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

1 ответ1

1

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

awk -F_ '{print $1}'

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

$ echo "$ 1"

$ echo "hello_you" | awk -F_ "{print $1}"
hello_you
$ echo "hello_you" | awk -F_ '{print $1}'
hello

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

$ myvar="ueee"
$ echo "hello_you" | awk -F_ "{ueee=23; print $myvar}"
23

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .