начать sed со строки 1000 и далее до конца файла, который не работает в моем коде - PullRequest
1 голос
/ 16 июня 2020

У меня есть следующая функция. Я хочу иметь возможность добавлять каждую из строк в файл, отправленный args $3 из строки 1000, но по какой-то причине, когда я запускаю следующую функцию, она, похоже, не работает.

Функция принимает в трех аргументах первый - это позиция в строке, с которой начинается добавление числа от $1, аргумент $2 - это число, которое нужно добавить, а arg $3 - имя файла. Я ввел 1000 в команду sed, но она не работает. Может ли кто-нибудь помочь мне найти проблему?

function addusingsed {
    len_of_val="${#2}"
    insert_pos=$(($1 - 1))
    sed -i -n '1000s/\(.\{'$insert_pos'\}\)/\1'$2'/' "$3"
}

1 Ответ

2 голосов
/ 16 июня 2020

Одно число перед командой sed указывает sed применить команду к только этой одной строке . Для обработки диапазона вам понадобится пара, разделенная запятыми (1000,2000s/ et c), представляющая начальную и конечную строки (включительно) и использующая $ для представления адреса последней строки.

Кроме того, в его нынешнем виде вы не получите никакого вывода из-за опции -n, которая отключает вывод, если явно не запрошено. Возможно удалите - попробуйте:

sed -i '1000,$s/\(.\{'$insert_pos'\}\)/\1'$2'/' "$3"
...