LinuxForum.Fans
Тема

Перенос фрагмента текста из файла в файл [решено]

Автор: Evg 13 сообщений 3431 просмотров
#21929

Такая задача: есть два текстовых файла. Нужно перенести фрагмент текста из одного в другой. Вот виндоуз например это можно сделать просто ctrl-c ctrl-v. Как это максимально эффективно сделать в консоли линукс?

#21969

Открываешь в kde консоль ,

cat file.txt чтоб вывести на экран
выделяешь нужный кусок

создаешь в dolphin txt файл

а дальше ctrl+с ctrl+v

#21991
ism написал:
Открываешь в kde консоль ,

А без графических оболочек, возможно?

#22000
Evg написал:
А без графических оболочек, возможно?

Не вижу препятствий. Выделяем мышкой нужный фрагмент, ставим курсор куда надо пастить и тычем колесо.

#22003

я имел ввиду когда они вообще не установлены, одна консоль. там даже мышки то нет..

#22021
Evg написал:
я имел ввиду когда они вообще не установлены, одна консоль. там даже мышки то нет..

несколько строчек надо?
проще всего vim'ом - давишь на v, и выделяешь. потом d (удаляется), потом в другом окне (C^WW) давишь p. Можно и mc(edit), кнопкой F3 выделяешь (стрелками), удаляешь и вставляешь (см. справку).
Конечно кошернее делать с помощью sed:
1) нужно вырезать строки с 20 по 30. пишешь sed -n '20,30p' file1.txt >tmp.txt
2) вырезаешь sed '20,30d' file1.txt -i
3) теперь вставляем после седьмой строки sed '8r tmp.txt' >file2.txt
4)???????
5)PROFIT
можно ещё что-нить придумать ;)

#22022

vim вам в помощь

#22023

В vim есть буфер, который работает даже между закрытиями самого vim
Т.е. переходите в режим выделения <v>, выделяете нужный кусок и копируете его в буфер <y>
Закрываете тот файл, открываете другой, доходите до нужного места и вставляете <p>.

Этого описания Вам не хватит, если Вы не владеете vim хотя бы на начальном уровне - пройдите vimtutor


Также, можно, собственно, и cat перенаправлять. Пример:

cat file1 >> file2
допишет содержимое file1 в конец file2

head -n 20 file1 | tail -n 10 >> file2
допишет строки с 11-ой по 20-ую (если нумеровать с первой) в конец file2

sed -n '11,20p' file1 >> file2
то же самое, что и предыдущее, но с помощью sed


и маны, маны, маны по всем перечисленным программам.

#22025
drBatty написал:

Конечно кошернее делать с помощью sed:
1) нужно вырезать строки с 20 по 30. пишешь sed -n '20,30p' file1.txt >tmp.txt

а можно указать место в которое вставлять в файле назначения? например с 5-й строки?

lava написал:
В vim есть буфер, который работает даже между закрытиями самого vim

ух ты круто, не знал..

#22032
Evg написал:
а можно указать место в которое вставлять в файле назначения? например с 5-й строки?
drBatty написал:
3) теперь вставляем после седьмой строки sed '8r tmp.txt' >file2.txt
#22042
drBatty написал:
потом в другом окне (C^WW) давишь p.

А как читать подобные комманды С^WW что это значит и как это вводить?
Вообще можно сделать чтото типа закладок в рамках одного запуска vim например открыть 5 файлов и между ними переключаться?

#22049
Evg написал:
А как читать подобные комманды С^WW что это значит и как это вводить?
Вообще можно сделать чтото типа закладок в рамках одного запуска vim например открыть 5 файлов и между ними переключаться?

дык там дока есть!
:split file2.txt
распилит окно попалам
его можно закрывать, смещать и т.д.
например

text
4
CTRL+W
-

уменьшит окно на 4 строки. итп.
в сети есть доки по-русски
в самом виме не по русски обычно, но не сложно.
можно открыть не только 10 окон, но и ещё по 20 файлов в этих окнах (команда :e)
на самом деле, vim только в первые полчаса сложен, потом всё просто.

Войдите или зарегистрируйтесь, чтобы ответить.