Нужно поместить строку в файл в определенном месте - PullRequest
0 голосов
/ 04 июля 2018

Цель состоит в том, чтобы взять строку из одного файла и заменить конкретную строку в другом файле.

Почти готово, но нужно знать отмеченную линию, или, может быть, есть более подходящее решение. Спасибо.

if grep -q "edem_pl" /sdcard/DiseqTree.ini ; then
        grep edem_pl /sdcard/DiseqTree.ini > /sdcard/temp.txt
        else
        echo "no edemtv user"
        fi 

    **********************
    after making some actions
    **********************

    if [ -e "/sdcard/temp.txt" ]; then
    **copy string from /sdcard/temp.txt and replace with it string that contains edemtv in /sdcard/DiseqTree.ini**
    else
    echo "no edemtv user"
    fi

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

лучшее решение

sed -i "s!.*edemtv.*!$(cat /sdcard/temp.txt)!g" /sdcard/DiseqTree.ini

также

replace=`grep edem_pl /sdcard/temp.txt`
sed -i "s/.*edemtv.*/$replace/g" /sdcard/DiseqTree.ini

еще один

busybox sed -i '/.*edemtv.*/{
    r /sdcard/temp.txt
    d
    }' /sdcard/DiseqTree.ini

благодаря сообществу 4pda

0 голосов
/ 05 июля 2018

Команда:

sed s/edem_pl/edemtv/g

будет действовать как фильтр, который заменяет (s ubstitutes) все строки (g lobally), содержащие edem_pl, которые проходят через него эквивалентными строками, содержащими edemtv. Вы можете вставить это в свою команду следующим образом:

grep edem_pl /sdcard/DiseqTree.ini | sed s/edem_pl/edemtv/g > /sdcard/temp.txt

и /sdcard/temp.txt будут содержать только строки, изначально содержащие edem_pl, с заменой на edemtv.


Имейте в виду, что edem_pl и edemtv рассматриваются здесь как регулярные выражения. В этом случае не требуется выполнять специальные экранирования, но если они содержат специальные символы регулярного выражения, такие как [ и ^, эти символы необходимо экранировать с помощью \.

...