2017-02-17 13 views
0

У меня есть этот скрипт в отдельный файл для первого столбца и второй колонкекоманда AWK -drop один столбец и сохранить с другим именем с датой

awk -F\| 'NR>1 {print > "SEPARATE_COLUMN_"$1"_"$2".csv"}' name_1.csv 

Но я хочу бросить второй столбец после разделения файла и укажите дату в имени файла.

Вот входной образец

column1|column2|column3 
a|b|1 
a|b|2 
a|d|2 

Выхода я хочу в новом имени файла SEPARATE_COLUMN_a_b_todaydate.csv

column1|column3 
a|1 
a|2 

дополнительных ноты - у меня есть много файлов для разделения, name_1.csv, name_2.csv и т. д. - разные файлы имеют разное количество столбцов
Спасибо!

ответ

0
awk -F\| 'NR>1 {print > "SEPARATE_COLUMN_"$1"_"$2"_"strftime("%d-%m-%y" ,systime())".csv"}' name_1.csv 

Это использует встроенную функцию strftimeawk «s. %d-%m-%y - это формат времени, подлежащего преобразованию с systime(), который возвращает эпоху.

Или вы можете использовать: это будет использовать bash для вычисления текущей даты и сохранения ее переменной для последующего использования.

awk -v date="$(date +"%Y-%m-%d ")" -F\| 'NR>1 {print > "SEPARATE_COLUMN_"$1"_"$2"_"date".csv"}' name_1.csv 
+0

Я пробовал свой скрипт, но он показывает, что функция strftime не определена. – Kiki

+0

@kiki, какова ваша версия 'awk'? my - это «GNU Awk 3.1.7», и он отлично работает. –

+0

Большое вам спасибо. У вас есть идея, как удалить столбец, как я сказал выше? @PS. – Kiki

0

Возможно, вы можете использовать это для разработки.

awk -F\| 'NR<4{print $1,$3}' OFS=\| file 

column1|column3 
a|1 
a|2 
+0

О, забыл упомянуть в моем вопросе, на самом деле пропустить 2-й столбец. У меня есть n-е число столбцов (почти 100) и вы хотите удалить второй столбец. Но спасибо! – Kiki

 Смежные вопросы

  • Нет связанных вопросов^_^