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