shell--2---sed命令 用户自动建立脚本 改apache端口脚本 判断用户是否建立

sed

利用script来处理文本文件。

sed可依照script的指令,来处理、编辑文本文件。

Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等

Sed的删除和添加行数

cat -n d| sed '5d'   列出d中内容及行号并删除第五行
cat -n d| sed '2d;4d' 列出d中内容及行号删除第二行和第四行
cat -n d| sed '1,3d'  列出d中内容及行号删除第一到第三行

在指定行之后添加新行

sed -e a\xue d  未指定那一行每行之后都加
sed -e 1a\xue d 1—>xx指定某行之后添加

指定字符之后添加

sed '/world/aworld'   d     world之后添加world
sed '/world/aworld\ntest'  d  word之后加入world和test两行
sed '/^world/aworld\ntest' d  world之前加入
sed '/world$/aworld\ntest' d  world之后加入

插入

sed '/hello/ilove' d           d文件hello之上添加love

修改

sed '/hello/clove' d  hello变为love

删除

sed '/^#/d' fstab   删除以#开始的
sed '/^#/!d' fstab   删除不是以#开始的

《shell--2---sed命令 用户自动建立脚本 改apache端口脚本 判断用户是否建立》

《shell--2---sed命令 用户自动建立脚本 改apache端口脚本 判断用户是否建立》

sed  n '/^UUID/!d' fstab   显示所有
sed -n '/^UUID/!d' fstab  什么也不显示
sed   '/^UUID/!d' fstab  开头为UUID的不删除
cat -n  fstab|sed '1,4d'  删除第1,4行

《shell--2---sed命令 用户自动建立脚本 改apache端口脚本 判断用户是否建立》

对于两个文件之间的合并(写)

sed  '$r d' fstab   d加在fstab的末尾
sed  '1r  d' fstab d加在fstab的第一行之后
sed  '/UUID/r d' fstab d加在UUID之后

替换

sed 's/nologin/westos/g' passwd  全文no替换westos
sed 's/\/nologin//g' passwd    /nologin替换为空格

sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向! 不过,这个动作会直接修改到原始的文件,所以请不要随便拿系统配置来测试,加上参数 -i 可实现对原始文件的修改

用户自动建立脚本

现在有两个文本userfile passfile写一个脚本建立用户密码,用户用第一行匹配第一行密码,依次类推

#!/bin/bash
[ "$USER" = "root" ]||{
        echo please run this with root
        exit
}
[ -e "$1" -a -e "$2" ]||{
        echo $1 or $2 is not exist
        exit
}
[ -z "$1" -o -z "$2" ]||{
        echo Please input userfile or passwd file
        exit
}
Max_Line=`wc -l $1 | cut -d" "  -f  1`
for NUM in `seq 1 $Max_Line`
do
        USER=`sed -n ${NUM}p $1`
        PASS=`sed -n ${NUM}p $2`
        useradd  $USER
        echo $PASS | passwd --stdin $USER &>/dev/null &&{
        echo $USER created
}
done

《shell--2---sed命令 用户自动建立脚本 改apache端口脚本 判断用户是否建立》

脚本要求写一个可以自动更改apache端口的脚本

#!/bin/bash
[ -n "/etc/httpd/conf/httpd.conf" ]||{
        echo Error:Apache is not installed 
        exit
}
sed "/^Listen/cListen $1"  -i /etc/httpd/conf/httpd.conf
systemctl restart httpd
netstat -antlupe | grep httpd

 《shell--2---sed命令 用户自动建立脚本 改apache端口脚本 判断用户是否建立》

在文件/usr/share/mime/packages/freedesktop.org.xml 中查找所有包含 ich 的行,将找出的行按照先后顺序拷贝到/root/lines文件中,/root/lines文件不包含空格,并且其中行的内容是源文件,/usr/share/mime/packages/freedesktop.org.xml 原始行的准确副本

[root@xaut mnt]# sed -e 's/^\ *//g' -ne '/ich/p' /usr/share/mime/packages/freedesktop.org.xml >/root/lines
[root@xaut ~]# grep ich /usr/share/mime/packages/freedesktop.org.xml|sed 's/\  *//g'> /root/lines

 

《shell--2---sed命令 用户自动建立脚本 改apache端口脚本 判断用户是否建立》

#!/bin/bash
[ "$#" = 0 ]&&{
        echo " Please input username"
}
Check_User=`getent passwd $1`
[ -n "$Check_User" ]&&{
        echo "   [D]elete   [C]hangepasswd   "
        read -p "    What do you want : " ACTION
        [ "ACTION" = "d" -o "ACTION" = "D" ]&&{
                userdel -r $1
                echo $1 is deleted!!
                exit
        }
        [ "ACTION" = "c" -o "ACTION" = "C" ]&&{
                read -p "input password: " PASS
                echo $PASS |passwd --stdin $1
                echo "$1's passwd is changed"
                exit
        }
}||{
        echo " $1 is not exist you can  do this "
        echo "     [C]reate   [S]kip "
        read -p "       what   do you want:"  ACTION
        [ "$ACTION" = "c" -o "$ACTION" = "C" ]&&{
                useradd $1
                read -p "input passwd: " PASS
                echo $PASS | passwd --stdin $1
                echo $1 is created
                exit
        }
        [ "$ACTION" = "s" -o "$ACTION" = "S" ]&&{
                echo "BYE"
                exit

        }
}

《shell--2---sed命令 用户自动建立脚本 改apache端口脚本 判断用户是否建立》

    原文作者:一只猫-
    原文地址: https://blog.csdn.net/weixin_40460156/article/details/81940821
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞