2015-12-09 4 views
0

У меня есть большой текстовый файл, и я хочу его открыть и перейти на строку, содержащую определенную строку. Что мне удалось сделать, это перейти на определенный номер строки.Перейти к определенной строке в txt-файле

import os 
os.system('sudo gedit +50 test.txt') 

Как отредактировать код, чтобы он искал определенную строку вместо номера строки?

+0

Используйте 'grep -n', чтобы получить номер строки, а затем использовать текущий подход. Я не понимаю, почему вы используете Python для этого. – fedorqui

+0

Запуск 'gedit' с' sudo' в лучшем случае не рекомендуется. Чего вы на самом деле хотите достичь? – tripleee

+0

Я хочу, чтобы просмотреть текстовый файл для пользователя, но вместо того, чтобы представлять файл с самого начала, я хочу перейти на строку, которая будет содержать определенную строку – cherry84

ответ

0

На самом деле вы не сможете открыть файл и перейти прямо к строке, без предварительной логики, чтобы понять, где находится эта строка.

Это должно сделать трюк:

with open('test.txt', 'r') as myFile: 
    for line in myFile: 
     if 'My Search String Here' in line: 
      print line 

Вы также можете захотеть взглянуть на это: https://docs.python.org/2/library/linecache.html

+0

Спасибо за ответ, но я хочу, чтобы файл отображался в gedit не в оболочке, поэтому я блуждал, если есть команда в Linux, чтобы открыть файл и сделать, как поиск ctrl + f, чтобы перейти на строку. – cherry84

1

Вы можете вызвать строку в качестве первого вхождения текста, которые вы ищете с следующей строкой:

gedit +$(grep -n "id" test.txt | head -n 1 | cut -f 1 -d ':') test.txt 

Это grep -n "text_to_find" test.txt | head -n 1 | cut -f 1 -d ':' означает:

  1. grep ... Расскажите мне все строки, где Есть «test_to_find» и префикс с номером строки
  2. head ...: получить первое вхождение
  3. cut ... получить номер строки

Вы должны исправить это в случае, если есть не являются значениями

Смежные вопросы