Опять отправил, не дописав... Также порекомендую, по возможности, прочитать хорошую книгу http://www.opennet.ru/docs/RUS/bash_scripting_guide/ :)
10.08.2010, 20:54, "Сергей Блохин" <sblo...@yandex.ru>: > # 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...@lists.ubuntu.com >>> https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru >> Обращаюсь за пояснением. Где здесь имя входного файла? А где имя файла на >> выходе? >> >> -- >> С уважением, Людмила >> -- >> ubuntu-ru mailing list >> ubuntu...@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