Ubuntu терминал копирует номер строки N из одного файла в другой


Я хотел бы знать, возможно ли скопировать строки с номерами 7,8,9 и 17,18 одного текстового файла в другой?

Большое спасибо заранее !!!

1
задан 14.04.2020, 06:29

3 ответа

Вы можете использовать sed (редактор потоков) для выборочной печати строк по номеру, например

sed -n '7,9p;17,18p' oldfile > newfile
0
ответ дан 14.04.2020, 06:29

Если вы знаете, сколько строк в вашем исходном файле (wc -l), вы можете сделать это ... предположим, что 12000 строк и вам нужно 2000 - 7000 строк в вашем новом файле (всего 5000 строк).

cat myfile | tail -10000 | head -5000 > newfile

Прочитайте последние 10k строк, затем прочитайте первые 5k строк из этого.

0
ответ дан 14.04.2020, 06:30
  • 1
    Вы могли, по крайней мере, отправить ссылку на исходный ответ: stackoverflow.com/questions/9259658/… .. или сделайте достойную вещь и ответьте на него без использования скопировать/вставить.. – Nejla Hidić 14.04.2020, 06:30
  • 2
    Спасибо очень за Вашу справку!!! Это - очень интересный подход, спасибо. – JohnCoene 14.04.2020, 06:30

вы не должны не полагаться на порядок строк в файле, потому что он может измениться (если это системный файл, временный файл и т. Д., И он обновлен).
[114 ] Вы можете использовать grep или один из его вариантов, например, rgrep:

rgrep WordOrRegularExpressionToMatch "Name_of_the_file"

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

rgrep WordOrRegularExpressionToMatch "Name_of_the_file" >> "Name_of_the_second_file"

. добавить строки, напечатанные rgrep, ко второму файлу; для перезаписи используйте «>», а не «>>».
Если вы действительно хотите извлечь точный набор строк , вы можете использовать «sed»:

sed -n -e 7,9p -e 17,18p "Name_of_the_file"

(это 2 отдельных интервала)

Итак ...

sed -n -e 7,9p -e 17,18p "Name_of_the_file" > "Another_file_to_overwrite"

( >> добавить > Скопировать и вставить строку: это сделает работу. :-)
" man sed " даст вам больше помощи.
Хорошего дня!

0
ответ дан 14.04.2020, 06:30

Теги

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