需要在文件中的特定位置放置字符串

时间:2018-07-04 20:42:02

标签: string replace sh word

目标是从一个文件中提取字符串,然后在另一文件中替换特定的字符串。

几乎完成了,但是需要知道标记的行,或者也许有更多相关的解决方案。 谢谢。

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 :(得分:0)

命令:

sed s/edem_pl/edemtv/g

将充当过滤器,以代替(s替代所有包含g的行(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_pledemtv在此处被视为正则表达式。在这种情况下,不需要进行特殊的转义,但是如果它们包含正则表达式特殊字符(例如[^,则这些字符将需要使用\进行转义。)

答案 1 :(得分:0)

最佳解决方案

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社区