Отредактируйте файл, используя значения в другом файле в качестве ввода и перенаправьте файл редактировать в другой файл

Измените его на следующую строку

MEXFLAGS:=CXX=#$(CC) CXXFLAGS\#'$(CCFLAGS)'

Убедитесь, что CC определен где-то раньше:

CC=g++
2
01.11.2018, 12:08
2 ответа

То, что вы ищете, называется механизмом шаблонов. Я сделал extremly simple not reliableодин для вас. Он основан на sed и, вероятно, чрезвычайно хрупок.

Обратите внимание, что у вас есть <IP address2>10.30.123.30вместо <IP Address2>10.30.123.30, поэтому мой скрипт не (работал )как ожидалось. Полный код ниже:

#!/usr/bin/env bash
cat <<EOF >file_1
<IP Address1>, 10, 23, <GW IP1>
FINAL INPUT.45.324
<IP Address2>, 40, 33, <GW IP2>
EOF
cat <<EOF >file_2
<IP Address1>10.155.120.20
<GW IP1>10.155.120.30
<IP Address2>10.30.123.30
<GW IP2>10.30.123.1
EOF
cp file_1 file_final
while read to_split; do
    echo "to_split: $to_split"
    arg1="${to_split%>*}>" # > because it is removed
    arg2="${to_split#*>}"
    echo "1: $arg1"
    echo "2: $arg2"
    sed -i  "s/$arg1/$arg2/g" file_final
done < file_2

Сценарий автономный, поэтому вы можете попробовать его самостоятельно :).

Дело в том, что я не могу сказать, что это отличное решение. Реальным решением будет использование какого-нибудь шаблонизатора, такого как Jinja2.

0
27.01.2020, 22:29

Как далеко

awk  '
NR==FNR         {T[$1 FS] = $2
                 next
                }
                {for (i=1; i<=NF; i++) if ($i in T) $i = T[$i]
                }
1
'
FS=">" file2 FS=", " OFS=", " file1
10.155.120.20, 10, 23, 10.155.120.30
FINAL INPUT.45.324
10.30.123.30, 40, 33, 10.30.123.1

понял? Он собирает значения замены из файла2 в массив, индексированный по метке, а затем в файле данных1 проверяет наличие каждого поля в массиве и заменяет его, если применимо. Кстати, я заменил строчный «адрес» на верхний регистр.

0
27.01.2020, 22:29

Теги

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