Предположим, что я хочу сократить больше чем один интервал строк из одного файла (например, строки 1-500, 1029-1729 и 2696-3446), добавляя значения в конце другого файла (output.txt) и устраняя эти значения из первого файла. Источник является файлом с 9 277 строками, я хочу сократить некоторых из них, устраняя их из исходного файла и вставляя их в другой файл. Это возможно через командную строку?
Используя sed, можно записать ряд строк в другой файл при удалении его из текущего файла как так:
sed -i -e 'N, M { w output.txt
d }' input.txt
где N
и M
номера строки. -i
опция делает sed
сохраните изменения в исходном файле, и здесь d
команда удаляет к тем строкам. В то же время, w output.txt
заставляет выбранные строки быть записанными в output.txt
. И да, это - две отдельных строки: sed
требует что w
имя файла команды быть до новой строки.
Таким образом, можно сделать что-то как:
cmd=' { w output.txt
d }'
sed -i -e "1,500 $cmd" -e "1029,1729 $cmd" -e "2696,3446 $cmd" input.txt
возможный!
строки копии к dest.file
с перенаправленным outout grep 'pattern' src.file >> dest.file
удалите строки из src.file
с sed -i '/pattern/d' src.file