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