Не получается уловить динамический обмен переменными FS
/ RS
, поэтому я получаю следующие результаты из ввода:
Input_file
header 1
header 2
{
something should not be removed
}
50
(
auto1
{
type good;
remove not useful;
}
auto2
{
type good;
keep useful;
}
auto3
{
type moderate;
remove not useful;
}
)
Выходной_файл
header 1
header 2
{
something that should not be removed
}
50
(
auto1//good
{
type good;//good
}
auto2//good
{
type good;//good
keep useful;
}
auto3//moderate
{
type moderate;//moderate
}
)
Ключевые моменты:
- Никаких изменений не происходит, когда кодовый блок
{...}
не предшествует autoX
(X может быть 1,2,3 et c.). - Изменения должны произойти, когда за
autoX
следует кодовый блок {...}
. - значение внутри кодового блока &
autoX
изменяется с добавлением \\good
или //moderate
, которое необходимо прочитать из самого {...}
. - вся строка должна быть удалена из
{...}
, если в нем есть фраза remove
.
СОВЕТ: Это может быть что-то, что может использовать regex и идея объяснена здесь , с этим конкретным примером .
На данный момент я смог выполнить только последнее требование со следующим кодом:
awk ' {$1=="{"; FS=="}";} {$1!="}"; gsub("remove",""); print NR"\t\t"$0}' Input_file
Заранее благодарим за ваше умение и время, чтобы решить эту проблему с помощью awk .