@vladragone

Как удалить все строки до n через sed?

Пытаюсь удалить все строки в файле от 1 до n, получаю n через grep:
a=`grep -n "string:" file1 | cut -d: -f1`
Далее пытаюсь понять как удалить через sed все строки от 1 до n по типу:
sed -i '1,$a d' file1
Как отредактировать это, чтобы работало?
  • Вопрос задан
  • 430 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как отредактировать это, чтобы работало?
получаю n через grep
Далее пытаюсь понять как удалить через sed все строки от 1 до n

Можно всё это выполнить в одном скрипте sed:
sed -i '0,/string:/d' file1
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
trapwalker
@trapwalker
Программист, энтузиаст
А почему именно через sed?
tail -n +10 << my_file
Вернет все строки файла, начиная с десятой.
Только нельзя писать в тот же файл, откуда читаете, иначе получите путой файл.
Вот можно так:
tail -n +10 my_file > temp_file; mv temp_file my_file
Ответ написан
xotkot
@xotkot
хорошо есть и хорошо весьма
awk "NR>3" FILE
вывести строки что больше 3

awk -i inplace "NR>3" FILE
где -i inplace перезаписывает файл, то есть по итогу в файле останутся строки начиная с четвертой

N=3
awk -i inplace "NR>$N"

то же что и предыдущее, но с указанием номера строки через внешнюю переменную
Ответ написан
Комментировать
@unbelieve
sed -i "1,nd" filename

Пример:
sed -i "1,15d" file.txt

Вместо file.txt можно *.txt и тд, для массовой обработки.

-i перезапишет файл(ы).
Без него информация выведется в терминале, без перезаписи файла. Т.е. можно сначала посмотреть, как сработает команда, потом применить с -i.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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