Есть текстовый файл в котором хранятся данные разделенные в несколько столбцов, например некоторое количество строк состоящих из "[дата] [ip] [mac]". Нужно чтобы скрипт обработал файл и вывел только те столбцы которые нужны.
На bash это будет выглядеть примерно так:
$ cat file.txt | awk '{print($1, $3)}'
Желательно без сторонних библиотек.
Спасибо.
> Есть текстовый файл в котором хранятся данные разделенные в несколько столбцов, например
> некоторое количество строк состоящих из "[дата] [ip] [mac]". Нужно чтобы скрипт
> обработал файл и вывел только те столбцы которые нужны.
> На bash это будет выглядеть примерно так:
> $ cat file.txt | awk '{print($1, $3)}'
> Желательно без сторонних библиотек.
> Спасибо.в текстовом файле какой используется разделитель между символами?(столбцами) уточните?
> в текстовом файле какой используется разделитель между символами?(столбцами) уточните?Один или несколько пробелов.
Вопрос то в чем?
$ cat file.txt | cut -d" " -f1,3
>> Желательно без сторонних библиотек.
> glibc-only пойдёт?Там навирху
Вывод определенных столбцов из файла. (Python), но плохо видно.
>(Python)
> 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", так как в итоге конкретные столбцы то взять?
> так как в итоге конкретные столбцы то взять?str = '1 2 3 4 5 6'
array = str.split()
print array[1:3]иль
print array[1] array[3]
>> так как в итоге конкретные столбцы то взять?
> 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])
И кстати, спасибо за аналогичную операцию в bash без awk.:) Тоже пригодится.)
> И кстати, спасибо за аналогичную операцию в bash без awk.:) Тоже пригодится.)Ну, на тебе бонус - без cat и cut на баше:
while read -a arr; do echo "${arr[0]} ${arr[2]}"; done <file.txt
Не пригодится, и тормоз на больших файлах. Но кусочек man bash.