次のファイルがあります。
export TMOUT
PS1="$(hostname):${LOGNAME}:\${PWD} ${PROMPT} "
PS1="${FGOLD}$(hostname):${LOGNAME}:\${PWD} ${PROMPT} ${NORMAL}"
PS1=abd
PS1="$(hostname):$LOGNAME:\$PWD $PROMPT "
export PS1 LANG
一致する行の下に次の行を追加する必要がありますexport TMOUT
。
FGOLD=`echo "\033[1;32m"`
したがって、最終出力は次のようになります。
export TMOUT
FGOLD=`echo "\033[1;32m"`
PS1="$(hostname):${LOGNAME}:\${PWD} ${PROMPT} "
PS1="${FGOLD}$(hostname):${LOGNAME}:\${PWD} ${PROMPT} ${NORMAL}"
PS1=abd
PS1="$(hostname):$LOGNAME:\$PWD $PROMPT "
export PS1 LANG
次のコマンドは機能しません。
sed 's/.*export.*\TMOUT./&\FGOLD=`echo "\033[1;32m"`/' pro
出力:
export TMOUT
PS1="$(hostname):${LOGNAME}:\${PWD} ${PROMPT} "
PS1="${FGOLD}$(hostname):${LOGNAME}:\${PWD} ${PROMPT} ${NORMAL}"
PS1=abd
PS1="$(hostname):$LOGNAME:\$PWD $PROMPT "
export PS1 LANG
答え1
すべてのsedの場合:
sed '/export TMOUT/ a\
FGOLD=`echo "\\033[1;32m"`' file
または、文字列を変数に入れます。
myvar='FGOLD=`echo "\\033[1;32m"`'
sed '/export TMOUT/ a\
'"$myvar"'' file
答え2
あなたは脱出していますT
:TMOUT
sed 's/.*export.*\TMOUT./&\FGOLD=`echo "\033[1;32m"`/' pro
^
|-----??
これは大きな違いを持ってはいけませんが、無意味です。まあ、あなたもキャラクターと一致しています。後ろに TMOUT
しかし、あなたのファイルはそうではありません(sed
最後の改行文字と一致しません)。この試み:
sed 's/export TMOUT./&\nFGOLD=`echo "\\033[1;32m"`/' file
私はこれをテストするための非GNUがなく、これが代替案で動作するsed
かどうかはわかりません。\n
それでも機能しない場合は、aを追加して\
改行Enter文字を取得してください。
sed 's/export TMOUT/&\ ## hit enter and continue writing on a new line
FGOLD=`echo "\\033[1;32m"`/' file
したがって、他のオプションは次のとおりです。
perl -pe 's/export TMOUT/$&\nFGOLD=\`echo "\\033[1;32m"\`/' file
またはawk
:
awk '{
if(/export TMOUT/){a=1}
{
print;
if(a==1){
print "FGOLD=`echo \"\\033[1;32m\"`";
a=0
}}}' file