Мне нужно написать скрипт для замены части файла на другую. Я обрабатываю сотни файлов.
У меня есть список команд, которые нужно добавить в кучу текстовых файлов. Но в файлах у меня в начале есть общие команды.
Я просто хочу заменить список команд своим списком команд. Дополнительная информация приведена ниже.
Исходный файл
%apj=E:\Work\Informatin\Regarding work\DND.apj
%mem=4GB
%nprocshared=2
#p oyu opsd qtnv/1-a(x) kglgg=uioewr
Application
0 1
X -3.66480600 0.10278400 -0.00655500
Y -4.11487100 1.45621700 -0.05226200
Z -5.10300200 1.90042600 0.83864800
1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0
Символы, которые я хочу использовать для замены
%apj=D:\Store\Data\Diff All\SMC.apj
%mem=800MB
%nprocshared=4
#p udf AMER hbvn/3-b(n) huggh=whea
Use
0 1
X -3.66480600 0.10278400 -0.00655500
Y -4.11487100 1.45621700 -0.05226200
Z -5.10300200 1.90042600 0.83864800
После замены моим списком команд я также хочу удалить символы, которые находятся после пустой строки, то есть следующих строк, и оставить пустое пространство.
1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0
Думаю, это то, что вам нужно:
sed '1,6d
7c%apj=D:\Store\Data\Diff All\SMC.apj\
%mem=800MB\
%nprocshared=4\
#p udf AMER hbvn/3-b(n) huggh=whea\
\
Use\
/^$/q' filename
Вместо замены построчно первые шесть строк удаляются (1,6d
), а седьмая заменяется новым заголовком, вставляемым с помощью команды c
. Наконец, обработка останавливается на следующей пустой строке.
Если это дает ожидаемый результат, добавьте опцию -i
для выполнения замены непосредственно в файле (GNU sed
, адаптируйте для версии BSD ).