# awk -- это команда (программа), точнее микроязык для работы с текстом.
# -F -- аргумент, который задаёт разделитель. В твоём случае -- это запятая. 
Если не указывать разделитель, то по умолчанию им будет пробел.
#  {printf $1", "} -- код языка awk. В данном случае он выводит первый столбец 
(до разделителя "запятая") и после него выводит запятую и пробел
# infile -- имя входного файла (.csv).
awk -F',' '{printf $1", "}' infile

Выходной же файл не создаётся, а результат работы awk выводится в stdout, т. е. 
в консоль.
Ты можешь указать нужный тебе выходной файл, если в конце (после infile) 
допишешь > outfile.

Общий принцип таких программ простой. Если им жёстко не заданы входные и 
выходные файлы, то они берут данные из stdin и отдают их в stdout (консоль).
Например, можно сделать так:
1. cat infile | awk # будет обработан файл infile, а результат выведен в консоль
2. cat infile | awk > outfile # будет обработа файл infile, а результат записан 
в outfile
3. awk infile > outfile # # будет обработан файл infile, а результат выведен в 
консоль
и т. д.



10.08.2010, 20:31, "Людмила Бандурина" <bigdogs...@gmail.com>:
> 10 августа 2010 г. 20:22 пользователь Andrew Bondarenko <b...@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
>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru
>
> Обращаюсь за пояснением. Где здесь имя входного файла? А где имя файла на 
> выходе?
>
> --
> С уважением, Людмила
> --
> ubuntu-ru mailing list
> ubuntu-ru@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

Дати відповідь електронним листом