Как получить строку из файла, используя номер строки, и легко отредактировать ее?

Я хочу знать, как можно извлечь извлеченный контент из файла, используя номер строки. У меня есть крены строк в файле, и иногда при импорте его в какую-либо базу данных, например, mongodb, это вызывает проблемы. Поэтому мне нужно отредактировать это. Но открывать ГБ файла снова и снова только для редактирования одной строки не стоит.
Следовательно, я хотел бы знать, как я могу извлечь содержимое из файла, используя его номер строки, а затем отредактировать все, что я хочу отредактировать, и снова сохранить его в файл, не открывая файл полностью. Скажи для примера:

command line_number 20000 /path/to/input/file

выход:

This your first testing text.
edit line_number 20000 /path/to/input/file

Затем появляются строки, и я перехожу к конкретным символам, скажем, your в строке и изменить его на my, Теперь мой новый контент в строке становится:

This is my first testing text.

Обратите внимание, что я не знаю, есть ли в строке слово или нет. Итак, сначала мне нужно проверить линию. Показать строку, используя номер строки. а затем отредактируйте его.
Есть ли способ добиться этого.
Позвольте мне очистить всех, я использую UBUNTU 16.04. Этот вопрос полностью основан на UBUNTU и не имеет другого дистрибутива ОС или Linux. Пожалуйста, не это.

2 ответа

Ты можешь использовать sed или же perl напечатать строку X:

$ cat -n input.txt                                                                                    
     1  roses are red
     2  violets are blue
     3  sed is interesting
     4  and perl is too

$ perl -ne 'print $_ if $. == 3'  input.txt                                                           
sed is interesting
$ sed -n '3p' input.txt                                                                               
sed is interesting

Тогда вы можете использовать sed 'NUMBERs/WORD/NEWWORD/' file.txt

$ sed '3s/interesting/fun/'  input.txt                                                                
roses are red
violets are blue
sed is fun
and perl is too

Ты можешь использовать -i пометить, а также редактировать файл на месте.

То же самое с Perl:

$ perl -pe 's/interesting/fun/ if $. == 3'  input.txt                                                 
roses are red
violets are blue
sed is fun
and perl is too

ПРИМЕЧАНИЕ. С двумя примерами редактирования вам не нужно знать, содержит ли строка слово или нет. И то и другое perl а также sed заменит слово тогда и только тогда, когда строка содержит слово / шаблон. Если этого не произойдет - линия останется прежней.

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

vi -c "%s/<old_value>/<new_value>/g|wq" <file_path>

например

vi -c "%s/<100>/<200>/g|wq" /home/aditya/sample.txt

Обновление 1:

sed '<line_number>!d' <filepath> ( this will print the line)


sed -i '<line_number>s/.*/<new_text>/' <filepath>  ( this is replace everthing in line with 'new_text')

Обновление 2:

sed -i '<line_number>s/<old_text>/<new_text>/' <filepath>  ( this is replace 'old_text' with 'new_text')

Посмотрите, поможет ли это.

Другие вопросы по тегам