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

Вы хотите добавить ваш текущий массив. Для этого выполните

declare -a array

для объявления вашего массива и

array+=("$line")

, чтобы добавить элемент в ваш массив.

Справочное руководство Bash:

In the context where an assignment statement is assigning a value to a shell variable or array index (see Arrays), the ‘+=’ operator can be used to append to or add to the variable's previous value.

0
23.08.2019, 14:35
2 ответа

Попробуйте это,

while IFS= read -r line; do
    NAME="`echo "$line" | awk '{$1=""; print}'`"
    sed "s#^<eName>Licensed Original.*</eName>#<eName>Licensed Original$NAME</eName>#;s#^<eName>Licensed Reversal.*</eName>#<eName>Licensed Reversal$NAME</eName>#" LO.xml >> LR.xml
done < input.txt
0
28.01.2020, 03:20

Как вам это решение?:

sed -i -E -e "s/(Original|Reversal).*</\1$(sed '1q;d' file.txt)</" -e 's/C[0-9]*//' file.xml

text="$(cat foo)" && echo "$text" \
| sed -E -e "s/(Original|Reversal).*</\1$(sed '2q;d' file.txt)</" -e 's/C[0-9]*//' >> file.xml

Найдите шаблон Origina|Reversalдо <

.
sed -i -E -e "s/(Original|Reversal).*</

Заменить первой строкойfile.txt

    /\1$(sed '1q;d' file.txt)</" -e 's/C[0-9]*//' file.xml

Скопируйте содержимое файла xml и повторите операцию, на этот раз со второй строкой file.txtи добавьте вывод в файл xml

text="$(cat foo)" && echo "$text" \
| sed -E -e "s/(Original|Reversal).*</\1$(sed '2q;d' file.txt)</" -e 's/C[0-9]*//' >> file.xml
0
28.01.2020, 03:20

Теги

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