Linux shell上的一些命令问题
发布网友
发布时间:2022-04-22 19:53
我来回答
共2个回答
热心网友
时间:2023-08-04 00:02
注解了一下:
cat $1 | while read line #打印输入的第一个命令行参数文件,输出到管道读取每一行
do #对每一行处理
echo $line | grep -q "pubInit" #如果这一行能够匹配pubInit,grep -q表示匹配也不输出东西
if [ $? -eq 0 ]; then #如果上个进程退出返回0,应该是匹配了pubInit
old=`echo $line | sed -n '/pubInit/,/(/p'` #如果这行匹配pubInit和括号就赋值给old
minold=`echo $line | sed -n '/pubInit/,/(/p' | sed 'y/ABCDEFGHIJKLMNOPQR
STUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` # 如果这行符合pubInit和括号就将大写字母转为小写赋值给 minold
mintab=`echo ${minold#*t}` #删除 minold中的*t
echo $old | sed s/$old/init_${mintab}/ >> $1.tmp #old替换为init_连上${mintab} 并且输出给临时文件
continue #继续下一行
else #不匹配
echo "$line" >> $1.tmp #直接输出到文件
fi
done
mv -f $1.tmp $1 #将临时文件改名
热心网友
时间:2023-08-04 00:02
${minold#*t} 这是shell的变量替换
这么写虽然可以,不过有点麻烦 这种替换单用sed就可以了
sed -i.old "s/pubInit\([a-zA-Z]*\)/init_\l\1/g" file追问`echo ${minold#*t}`这个什么意思??
有没有关于shell的资料有的话给我发一份呗
78+34358发了就给分