Обработать .csv из командной строки
Andrew Bondarenko
bond на relex.ru
Вт Авг 10 17:42:50 BST 2010
On 08/10/2010 08:31 PM, Людмила Бандурина wrote:
> 10 августа 2010 г. 20:22 пользователь Andrew Bondarenko <bond на relex.ru
> <mailto:bond на relex.ru>> написал:
>
> On 08/10/2010 08:17 PM, Andrew Bondarenko wrote:
> > On 08/10/2010 08:02 PM, Людмила Бандурина wrote:
> >> Здравствуйте,
> >>
> >> Посоветуйте, пожалуйста, способ обработать .csv
> >>
> >> Имеется:
> >>
> >> "name1","name_eng1","code1","shortCode1"
> >> "name2","name_eng2","code2","shortCode2"
> >>
> >> И так далее, таких строк очень много
> >>
> >> Нужно получить:
> >>
> >> "name1", "name2", "name3", "name4", "name5", "name6", "name7",
> "name8",
> >> "name9", "name10", "name11", "name12", "name13", "name14", "name15",
> >> "name16",
> >>
> >> И так далее - по 8 в строке, только первое поле из имеющихся в .csv
> >> Или хотя бы в одну строку - но только первое поле.
> >> Кавчки есть во входном файле, они должны быть и в выходном файле.
> >>
> >> Я пока совсем не знаю bash, даже на таком уровне...
> >>
> >
> > Дак це ж гавка! =)
> >
> >
> > awk -F',' ' BEGIN { current=1 } { if (current<8) { printf $1"," ;
> > current++ ; } else { print $1"," ; current=1 ; } } ' infile
> >
> >
> > где infile, как Вы понимаете, входной файл
> >
> >
>
> хм... присмотрелся к "Нужно получить", у Вас там пробелы ещё, если
> синтаксис гавки непонятен, то это будет так:
>
> awk -F',' ' BEGIN { current=1 } { if (current<8) { printf $1", " ;
> current++ ; } else { print $1", " ; current=1 ; } } ' infile
>
>
> а что бы "хотя бы в одну строку" - это совсем просто:
>
> awk -F',' ' { printf $1", " } ' infile
>
> Всегда можете обратиться за пояснениями ;)
>
>
> --
> ubuntu-ru mailing list
> ubuntu-ru на lists.ubuntu.com <mailto:ubuntu-ru на lists.ubuntu.com>
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
>
>
> Обращаюсь за пояснением. Где здесь имя входного файла? А где имя файла
> на выходе?
>
> --
> С уважением, Людмила
>
имя входного файла - последний параметр, в моем примере "infile"
Можно также использовать "конвейер", то есть отдавать содержимое файла
на вход awk:
cat infile | awk -F ',' ' { ПРОГРАММА }'
выходной файл - стандартный вывод, то есть распечатает на экран. Именно
файл всегда можно создать стандартными средствами, то есть
перенаправлением вывода:
cat ВХОДНОЙ_ФАЙЛ | awk -F ',' ' { ПРОГРАММА }' > ВЫХОДНОЙ_ФАЙЛ
Подробная информация о списке рассылки ubuntu-ru