shell与awk的脚本运用(四)

版权声明: https://blog.csdn.net/wojiuwangla/article/details/84581858

网站改版,原来很多的东西都在/html下以dj开头,比如dj123,djXXXXxx,djLAMXAO,现在根据seo的规则,要将网站的url规范处理,集体301到新的url,目录也得变,伪静态也得添加,seo给的规则表格是在excel里,看了一眼,200多条,懒得手动一条一条添加,写个shell方便点。

由于都是在excel里,所以直接复制新旧url那两列到服务器上的一个新文件中。

#声明shell

#!/bin/bash

#将每一行的第一个域名替换为空
sed -i  's/m.xxxxxxx.com//' newfile

#将每一行的第一个域名替换为$1
sed -i  's/m.xxxxxxx.com/$1/' newfile

#将所有的html替换为html$
sed -i  's/html/html$/g' newfile

#获取newfile的最后一行行号,决定循环多少次
line_num=`awk 'END{print NR}' newfile`

#循环每一行
for i in `seq $line_num`

#开始循环

do

#打印出当前行存为变量
   line=`sed -n "$i p" rewrite`

#输出伪静态规则并且追加到rewrite.txt中
   echo "rewrite ^(.*)$line permanent;" >> rewrite.txt

#完成循环
done

#########################################目录拷贝

#声明shell

#!/bin/bash

#获取/html下所有目录名包含dj的目录,并且打印出目录名存为变量
all_file=`ls -l /html/ |grep "^d"|grep "dj" |awk '{print $NF}'`

#循环每一个文件
for i in $all_file

#开始循环
do

#打印出目录的绝对路径,方便排查错误
    echo /html/$i

#将目录中的大写英文字母转换成小写英文字母
    UPPERCASE=$(echo /html/$i | tr '[A-Z]' '[a-z]')

#输出转换后的结果
    echo $UPPERCASE

#输出目录名,并且以dj为分割线,取dj后面的字符串作为新的目录名
    cp_dir_dest=`echo $UPPERCASE|awk -F'dj' '{print $NF}'`

#输出要复制成的目录名
    echo $cp_dir_dest

#将/html下的所有带dj的目录名,复制到当前目录下的dj目录中,并且复制的目录名为dj之后的名字,比如:原来是dj123,复制过去就是123
    cp -r /html/$i ./dj/$cp_dir_dest

#完成循环

done

然后把伪静态规则拷贝到nginx配置文件中,nginx -t;nginx -s reload看看效果。

猜你喜欢

转载自blog.csdn.net/wojiuwangla/article/details/84581858