URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9632
[ Назад ]

Исходное сообщение
"Вывод определенных столбцов из файла."

Отправлено Аноним , 05-Фев-13 10:07 
Есть текстовый файл в котором хранятся данные разделенные в несколько столбцов, например некоторое количество строк состоящих из "[дата] [ip] [mac]". Нужно чтобы скрипт обработал файл и вывел только те столбцы которые нужны.
На bash это будет выглядеть примерно так:
$ cat file.txt | awk '{print($1, $3)}'
Желательно без сторонних библиотек.
Спасибо.

Содержание

Сообщения в этом обсуждении
"Вывод определенных столбцов из файла."
Отправлено StopHam , 05-Фев-13 10:45 
> Есть текстовый файл в котором хранятся данные разделенные в несколько столбцов, например
> некоторое количество строк состоящих из "[дата] [ip] [mac]". Нужно чтобы скрипт
> обработал файл и вывел только те столбцы которые нужны.
> На bash это будет выглядеть примерно так:
> $ cat file.txt | awk '{print($1, $3)}'
> Желательно без сторонних библиотек.
> Спасибо.

в текстовом файле какой используется разделитель между символами?(столбцами) уточните?


"Вывод определенных столбцов из файла."
Отправлено Аноним , 05-Фев-13 11:32 
> в текстовом файле какой используется разделитель между символами?(столбцами) уточните?

Один или несколько пробелов.



"Вывод определенных столбцов из файла."
Отправлено Pahanivo , 05-Фев-13 14:36 
Вопрос то в чем?

"Вывод определенных столбцов из файла."
Отправлено pavlinux , 05-Фев-13 14:46 
$ cat file.txt | cut -d" " -f1,3


"Вывод определенных столбцов из файла."
Отправлено Andrey Mitrofanov , 05-Фев-13 14:56 
>> Желательно без сторонних библиотек.
> glibc-only пойдёт?

Там навирху

Вывод определенных столбцов из файла. (Python)
, но плохо видно.

"Вывод определенных столбцов из файла."
Отправлено pavlinux , 05-Фев-13 15:05 
>
(Python)

http://docs.python.org/2/library/functions.html#print


"Вывод определенных столбцов из файла."
Отправлено name , 05-Фев-13 15:46 
> http://docs.python.org/2/library/functions.html#print

На гугл фейсконтроль пускает, просто ты знаешь что гуглить, а я вот понятия не имел что это в "print" есть.

Получилось так:
import sys
filename = open('data/name.txt')
print(*filename, sep=' ', end='\n', file=sys.stdout)

Выводятся все столбцы файла, независимо от того что я пишу в "end", так как в итоге конкретные столбцы то взять?


"Вывод определенных столбцов из файла."
Отправлено pavlinux , 05-Фев-13 15:48 
> так как в итоге конкретные столбцы то взять?

str = '1 2 3 4 5 6'
array = str.split()
print array[1:3]

иль

print array[1] array[3]


"Вывод определенных столбцов из файла."
Отправлено name , 05-Фев-13 16:54 
>> так как в итоге конкретные столбцы то взять?
> str = '1 2 3 4 5 6'
> array = str.split()
> print array[1:3]
> иль
> print array[1] array[3]

Спасибо.

В итоге для файла c несколькими строками и python3:

filename = open('путь/к/файлу', encoding='utf-8')
for i in filename:
    array = i.split()
    print(array[1], array[3])


"Вывод определенных столбцов из файла."
Отправлено name , 05-Фев-13 16:57 
И кстати, спасибо за аналогичную операцию в bash без awk.:) Тоже пригодится.)



"Вывод определенных столбцов из файла."
Отправлено Andrey Mitrofanov , 05-Фев-13 19:32 
> И кстати, спасибо за аналогичную операцию в bash без awk.:) Тоже пригодится.)

Ну, на тебе бонус - без cat и cut на баше:

while read -a arr; do echo "${arr[0]} ${arr[2]}"; done <file.txt

Не пригодится, и тормоз на больших файлах. Но кусочек man bash.