一个替换文本文件中某一个关键字附近的某一行的某一段的shell程序:

本文介绍如何编写一个Shell程序,该程序能够查找并替换文本文件中包含特定关键字的那一行内的特定内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个替换文本文件中某一个关键字附近的某一行的某一段的shell程序:


#!/bin/bash
file=$1
findpattern=$2
linegap=$3
replacepattern=$4
substitue=$5

help(){
  echo help:
  echo \$1:file\'s full path \(include filename\)
  echo \$2:the key string to be find
  echo \$3:the line count between the line where key string in and the line to be modified
  echo \$4:the string to be replace
  echo \$5:the string will take place the key string
}

echoinput(){
  echo \$1=$file
  echo \$2=$findpattern
  echo \$3=$linegap
  echo \$4=$replacepattern
  echo \$5=$substitue
}
if [ "$5" == "" ];then
  help;
  exit -1;
fi

echoinput;

if [ ! -f ${file} ];then
  echo $file is not exist.
fi

#echo "awk '/${findpattern}/{print NR}' ${file}";
n=`awk '/'"${findpattern}"'/{print NR}' ${file}`;
if [ "$n" == "" ];then
  echo can not find ${findpattern} in ${file};
  exit -1;
fi
echo find key string in line $n;
if [ ! -n $n ];then
  echo find too much lines.
  exit -1;
fi

n2=`expr $n + ${linegap}`;
echo will modify line $n2,line contnet is:;
awk 'NR=='${n2}'{print $0}' ${file};
#echo "sed ${n2}'s/${replacepattern}/${substitue}/g' ${file} > tmp${file};"
sed ${n2}'s/'"${replacepattern}"'/'"${substitue}"'/g' ${file} > tmp${file};
diff ${file} tmp${file}

还有些bug:只能在文本文件当前目录下运行。不修改了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值