다음 파일이 있습니다.
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