У меня есть строка, которую я хочу заменить.Он имеет формат:
VAL1 = "D_AC" ,
VAL2 = "DRC" ,
VALX2 = 3.33330000e+04, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
Обратите внимание, что строка содержит как двойные кавычки, так и символы новой строки.
Я хочу заменить ее на другую строку:
VAL1 = "D_AC" ,
VAL2 = "DRC" ,
VALX2 = 2.22110000e+04, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
Я пытался:
export OLD_STRING1=" VAL1 = \"D_AC\" ,"
export OLD_STRING2=" VAL2 = \"DRC\" ,"
export OLD_STRING3=" VALX2 = 3.33330000e+04, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, "
export NEW_STRING1=" VAL1 = \"D_AC\" ,"
export NEW_STRING2=" VAL2 = \"DRC\" ,"
export NEW_STRING3=" VALX2 = 2.22110000e+04, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, "
Затем вызывается grep
и sed
следующим образом:
find . -type f -name '*filename*' -exec sed -i '' s/$OLD_STRING1$OLD_STRING2$OLD_STRING3/$NEW_STRING1$NEW_STRING2$NEW_STRING3/ {} +
sed
генерирует ошибку:
sed: 1: "s/BX2 = "D_AC ...": unterminated substitute pattern
Как я могу решить это?