У меня есть следующие данные:
*DEFINE_CURVE_TITLE
Force for tool binder
$# lcid sidr sfa sfo offa offo dattyp
3 0 1.000000 125.00000 0.000 0.000 0
$# a1 o1
0.000 0.000
0.5000000 -1.0000000
100.0000000 -1.0000000
Я хочу изменить 3-ю строку после * DEFINE_CURVE_TITLE, например
3 0 1.000000 107.00000 0.000 0.000 0
, чтобы она стала
*DEFINE_CURVE_TITLE
Force for tool binder
$# lcid sidr sfa sfo offa offo dattyp
3 0 1.000000 107.00000 0.000 0.000 0
$# a1 o1
0.000 0.000
0.5000000 -1.0000000
100.0000000 -1.0000000
Вопрос в том, что я могу искать требуемую строку следующим образом
sed -i -e '/^\**DEFINE_CURVE_TITLE/{n;n;n;R $4 newBHF.txt' -e 'd}' input.txt
Таким образом, я нахожусь на строке для редактирования, т.е. на три строки ниже строки поиска.
Теперь яизменить значение $ 4 с 125,00000 на другое значение, которое может быть взято из newBHF.txt .Это newBHF.txt имеет необходимую замену, т.е. только одно значение 107.00000.Если возможно, пожалуйста, также скажите мне, как я могу установить $ 4 , если у меня есть значение в , другая переменная в той же программе .
awk -v p="$(cat newBHF.txt)" '/^\*DEFINE_CURVE_TITLE/{x=NR+3}NR==x{$5=p}1' input.txt
, кажется, работает, ноне сохраняя формат.Может ли эксперт помочь с sed?Это поможет мне многое сделать.
С наилучшими пожеланиями