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

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

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. Не это.

0
задан 10 February 2017 в 00:37

2 ответа

Можно использовать команду 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')

Видят, помогает ли это.

0
ответ дан 7 November 2019 в 00:22

Можно использовать 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 заменит слово, если и только если строка содержит слово/шаблон. Если это не сделает - то строка останется тем же.

3
ответ дан 7 November 2019 в 00:22

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

Похожие вопросы: