Я хочу знать, как можно получить извлеченное содержание из файла с помощью номера строки. У меня есть кроры строк в файле и иногда при импорте его в некоторой базе данных, как 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. Не это.
Можно использовать команду 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')
Видят, помогает ли это.
Можно использовать 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
заменит слово, если и только если строка содержит слово/шаблон. Если это не сделает - то строка останется тем же.