Код: Выделить всё
8) TERM=ansi-lwp; export TERM
BASEDIR=/home/dir ; export BASEDIR
. $BASEDIR/.setup
cd $BASEDIR
TERM=ansi-lwp; export TERM
prog copy
exit
;;
q) echo ; echo "Goodbye, "`logname`" !"
Код: Выделить всё
8) TERM=ansi-lwp; export TERM
BASEDIR=/home/dir ; export BASEDIR
. $BASEDIR/.setup
cd $BASEDIR
TERM=ansi-lwp; export TERM
prog copy
exit
;;
q) echo ; echo "Goodbye, "`logname`" !"
Код: Выделить всё
sed -ne '/8) TERM=ansi-lwp.*/,/q)/ s/.*$/OK/p' test.txt
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
OK
Код: Выделить всё
#! /bin/sh
s='jljkj kjlkj kl
kljkljkljkl jkl
kljkljklj
fghfghfhf
8) TERM=ansi-lwp; export TERM
BASEDIR=/home/dir ; export BASEDIR
. \$BASEDIR/.setup
cd \$BASEDIR
TERM=ansi-lwp; export TERM
prog copy
exit
;;
q) echo ; echo "Goodbye, "`logname`" !"
11111
tretretrr uiy uihjnmbc ntr d j
yutyu g786 ihjkhp9ujo.
12121212'
echo "${s}" | awk 'BEGIN {
a="8\) TERM\=ansi\-lwp\; export TERM"; # start block
b="q\) echo \; echo \"Goodbye\, \".*\" \!\"" # end block
c="replace block-first line\nreplace block-second line\n" # replace block
RS=a
}
/a/,/b/ { print c;}'
Код: Выделить всё
#!/bin/sh
ZAM=`cat zam.txt` #Многострочный текст на замену блока. В нём приходится предварительно экранировать все символы regex и выставлять "\" на концах строк.
/usr/bin/sed -ne "/8) TERM=ansi-lwp.*/,/q)/ s/.*/$ZAM/p" test.txt
Код: Выделить всё
sed -ne "/8) TERM=ansi-lwp.*/,/q)/ s/.*/&/p" test.txt
8) TERM=ansi-lwp; export TERM
BASEDIR=/home/dir ; export BASEDIR
. \$BASEDIR/.setup
cd \$BASEDIR
TERM=ansi-lwp; export TERM
prog copy
exit
;;
q) echo ; echo "Goodbye, "`logname`" !"
Код: Выделить всё
/usr/bin/sed -ne "/8) TERM=ansi-lwp.*/,/q)/ s/.*\" !\"/$ZAM/p" test.txt
Код: Выделить всё
#!/bin/sh
ZAM=`cat zam.txt`
#Change dir for "find ." to "find /home/" etc.
#
(find . -name ".bash_profile_old*" -exec /usr/bin/grep -le '^while.*8 \]$' '{}' +) > changed_bash_profiles.txt
#Change ".bash_profile_old*" to ".bash_profile"
#
for i in `find . -type f -name ".bash_profile_old*" | xargs grep -le '^while.*8 \]$' | awk -F: '{print $1}'`
do
cp ${i} ${i}_1
/usr/bin/sed -i '' -e 's/^while.*8 \]$/while \[ "$i" != 1 -a "$i" != 2 -a "$i" != 3 -a "$i" != 4 -a "$i" != q -a "$i" != Q -a "$i" != 5 -a "$i" != 6 -a "$i" != 7 -a "$i" != 8 -a "$i" != 10 \]/' \
-e 's/echo "8).*(\/prog_dir2\/dbcopy)"$/echo "8) Punkt of menu (\/prog_dir2\/dbcopy)"\
echo "10) New punkt of menu"/' \
-e 's/^if \[ "\$i".*8 \]$/if [ "$i" != 1 -a "$i" != 2 -a "$i" != 3 -a "$i" != 4 -a "$i" != q -a "$i" != Q -a "$i" != 5 -a "$i" != 6 -a "$i" != 7 -a "$i" != 8 -a "$i" != 10 ]/' \
-e "/8) TERM=ansi-lwp.*/,/q)/ s/.*\" !\"/$ZAM/" \
${i}
done
Код: Выделить всё
#! /bin/sh
##########################
# User defined variables
#-------------------------
srcfile='./srctest.txt' # source file
outfile='./replaced.txt' # output file
zamena='./zamena.txt' # file that contain replacement text
beginBlock='8\\) TERM\\=ansi.*' # start string of text block that would be replaced. Should be the Regular expression.
endBlock='q\\) echo \\; echo \\"Goodbye\\,.*' # end string of text block that would be replaced. Should be the Regular expression.
#
######################
# No user intervention beyond this point !!!!!!!!!
######################
cat "${srcfile}" | awk -v replace="${zamena}" -v a="${beginBlock}" -v b="${endBlock}" 'BEGIN {
c=""; x=1;
while (x != 0 && x != -1) {
x=getline < replace
if (x != 0) c=c $0 "\n";
}
if (x == -1) { print "Error while reading file: " replace " Exiting..."; exit 1; }
}
{ if ( $0 ~a && skip == 0) { skip=1; print c; }
if ( $0 ~b && skip == 1) { skip=0; next; }
}!skip' > "${outfile}"
exit 0