2017-02-20 29 views
0

Я хочу разбить файл на несколько файлов и сохранить файл в формате даты.Разделить файл на несколько файлов с помощью awk, но в формате даты

Почему эта команда не работает?

awk -v DATE= date '+%d%m%Y'-F"," 'NR>1 { print > "Test_" DATE ".CSV_"$1".csv"}' Testing.CSV 
+0

Это продолжение http://stackoverflow.com/questions/42292805/splitting-content-by-id-1st-column-and-generate-new-data-file-based-on-format –

+0

Почему бы просто не использовать собственные функции даты awk. Я не вижу необходимости использовать версию оболочки вместо этого. – grail

ответ

2

это должно работать

awk -F, -v date=$(date +%d%m%Y) 'NR>1{print > "Test_"date".CSV_"$1".csv"}' file 

, если нет, то попробуйте первый

awk -v date=$(date +%d%m%Y) 'BEGIN{print date}' 

, чтобы проверить, является ли дата правильно установлена ​​в качестве awk переменной.

+0

@RavinderSingh: Это моя успешная команда: awk -v DATE = "$ (date +"% Y% m% d ")" -F "," 'NR> 1 {print> "Assignment _" $ 1 "" DATE " .csv "} 'Text_01012020.CSV, но это получается следующим образом: Assignment_" A "_01012017 Я хочу удалить" __ ", вы можете мне помочь? – FARAH

+0

, если вы не хотите символ подчеркивания, удалите его из команды. Пустая строка "" перед DATE не требуется. Кроме того, все имена имен переменных caps не рекомендуются, поскольку они могут непреднамеренно переопределять определенные переменные awk. – karakfa

+0

Я просто хочу удалить двойное квотацию, так как он «$ 1», тогда он появится «А», я просто хочу, чтобы он отображался только А без двойной цитаты – FARAH

1

@FARAH: Попытка:

awk -v DATE=$(date +%d%m%Y) -F"," 'NR>1 { print > "Test_" DATE ".CSV_"$1".csv"}' Input_file 

Поскольку существует недостаток информации о пробах и ожидаемые результаты так, видя, что ваши потребности команды в какой-то точно выверенных, попробуйте выше, и дайте нам знать, если это помогает ,

+1

Вы не имеете в виду '$ (date +% d% m% Y)'? В настоящее время 'DATE' задается буквальной строкой' date +% d% m% Y'. –

+0

awk -v DATE = "$ (date +"% Y% m% d ")" -F "," NR> 1 {print> "Test_" DATE ".CSV _" $ 1 ".csv"} 'input_file I попробуйте это .. не могу также \ – FARAH

+0

Спасибо, Бенджамин, я исправил его сейчас, спасибо за руководство здесь, я не проверял предыдущий на самом деле. – RavinderSingh13