# 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