第三周

第三周blog

第三周blog

  • 1
       列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。
       # who|cut -d’ ‘ -f 1 |sort -u

  • 2
       取出最后登录到当前系统的用户的相关信息。
       # who | tail -n 1

  • 3
       取出当前系统上被用户当作其默认shell的最多的那个shell。
       # cat /etc/passwd|cut -d: -f7|sort|uniq -c|sort -n|tail -n 1

  • 4
       将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
       # cat /etc/passwd|sort -n -t: -k3|tail -n 10|tr [a-z] [A-Z] > /tmp/etc.conf

  • 5
       取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
       # ifconfig |grep “inet addr” |cut -d: -f2|cut -d’ ‘ -f1

  • 6
       列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。
       # ls /etc/*.conf|tr [a-z] [A-Z] > /tmp/etc.conf

  • 7
       显示/var目录下一级子目录或文件的总个数。
       # ls /var | wc -l

  • 8
       取出/etc/group文件中第三个字段数值最小的10个组的名字。
       # cat /etc/group|sort -n -t: -k3|head -n 10|cut -d: -f1

  • 9
       将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
       # cat /etc/fstab /etc/issue > /tmp/etc.test

-10
   用户及组管理命令概叙,
       主要 – 1 用户的增,删,改,查:useradd,userdel,usermod,id
            – 2 组的增,删,改,查 : groupadd,groupdel,groupmod,id
            – 3 用户及组的密码管理
                   用户密码:passwd
                   组密码:gpasswd

~ (1) 创建组distro,其GID为2016;
# groupadd -g 2016 distro
~ (2) 创建用户mandriva, 其ID号为1005;基本组为distro;
# useradd -u 1005 -g distro mandriva
~ (3) 创建用户mageia,其ID号为1100,家目录为/home/linux;
# useradd -u 1100 -d /home/linux mageia
~ (4) 给用户mageia添加密码,密码为mageedu;
# echo mageedu|passwd --stdin mageia
~ (5) 删除mandriva,但保留其家目录;
# userdel mandriva
~ (6) 创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
# useradd -u 2002 -g distro -G peguin slackware
~ (7) 修改slackware的默认shell为/bin/tcsh;
# usermod -s /bin/tcsh slackware
~ (8) 为用户slackware新增附加组admins;
# usermod -G admins slackware
~ (9) 为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;
# passwd -n 3 -x 180 -w 3 slackware
~ (10) 添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;
# useradd -u 3003 -g clouds -G peguin,nova openstack
~ (11) 添加系统用户mysql,要求其shell为/sbin/nologin;
# useradd -r mysql -s /sbin/nologin
~ (12) 使用echo命令,非交互式为openstack添加密码。
# echo "openstack" | passwd --stdin openstack

sed用法

  • 1  sed作用

  • 2  sed如何工作

  • 3  sed详细用法

sed用来处理什么

首先来看看man文档中如何介绍sed

sed - stream editor for filtering and transforming text

其意是数据流编辑器,过滤并且改变文本.用于编辑文本的工具.

sed如何工作
  • sed工作机制

    sed.png

sed是数据流处理工具,每次只读取一行数据,逐个读取,并将其复制到内存中的特定空间,此空间是sed自己的工作车间,被称为模式空间,即图中parttern space。在模式空间中根据sed所指定的条件进行模式的匹配,可以匹配的行进行处理后,可能保留在模式空间中,可能直接打印至终端(stdout),这需要根据具体的编辑操作,如果不能匹配的行则不处理,保留在模式空间中,在下一行读入数据之前,将模式空间中还保存的数据打印至标准输出(stdout).一直循环此机制到条件对应的行.

sed详细用法
sed [OPTION]... 'scripts' [file]...

    scripts:指的是sed命令匹配的标准,格式为"{[地址定位][编辑命令]}",即{[address-range][sed-command]}.

    OPTION:
        -n:不输出模式空间的内容至屏幕;
        -e script, --expression=script: 多点编辑;
        -f /PATH/TO/SED_SCRIPT_FILE
            直接运行sed脚本文件编辑,每行一个编辑命令
        -r, --regexp-extended:支持使用扩展正则表达式;
        -i : 直接编辑原文件;


    地址定位:
        空地址:对全文进行处理;相当于1,$;
        #: 特定的第#行,例如5行即匹配第5行;
        $: 最后一行;
        /pattern/:被模式所匹配到的每一行;
        /pattern/,/pattern/: 从第一次模式匹配到的行开始,到第二次模式匹配到的行为止;
        #,/pattern/: 第#行到第一次模式匹配到的行为止;
        #,#: 指定行范围,左侧为起始行,右侧为结束行;
        #,+#: 指定行范围, 左侧为起始行,右侧为以左侧为标准的偏移量;
            例如: 3,+7    第三行至第十行
                  1,$   第一行至最后一行
        步进:~
            1~2:所有奇数行
            2~2:所有偶数行


    编辑命令:
        d:删除;
        p:显示模式空间内容;
        a \text:在行后面追加文本"text",支持使用\n实现多行追加;
        i \text:在行前面插入文本"text",支持使用\n实现多行插入;
        c \text: 把匹配到的行替换为此处指定的文本"text";
        w /path/to/filename:将当前模式空间所匹配的行写入到指定文件中;
        r /path/to/filename:读取指定文件至匹配行的后面;可做文件合并;
        =:为模式匹配到的行打印行号;每个行号独占一行;
        !:条件取反;
            地址定位!编辑命令; 例如:'$!d',最后一行不删除;
        s///:查找替换,其分隔符可自行指定,常用的有s$$$,s###等;
            替换标记:
                g:全局替换;
                w:/path/to/somefile:将替换成功的结果保存至指定文件中;
                p:显示替换成功的行;
example:
将/etc/hosts文件打印,为什么会每行显示两遍呢,其实就是sed工作机制,首先将一行读入,根据条件是全文匹配,因此第一行直接打印至终端,然后再将模式空间保留原有的行再打印一次,因此便是两行。

    # sed 'p' /etc/hosts 
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

使用-n选项不打印模式空间的行,只显示处理之后的行
    # sed  -n 'p' /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

创建一个测试文件/tmp/test

    ]# cat > /tmp/test
    # 1 
    # 2 
    # 3
    # 4
    # 5

删除:

    删除/tmp/test第一行至第3行
    ]# sed '1,3d' /tmp/test
    # 4
    # 5

    删除/tmp/test第一行到三行以后,即到第四行
    ]# sed '1,+3d' /tmp/test
    # 5

    删除/tmp/test全文
    ]# sed '1,$d' /tmp/test     或者   ]# sed 'd' /tmp/test
    ]#

    删除/tmp/test奇数行,因此显示偶数行
    ]# sed '1~2d' /tmp/test
    # 2 
    # 4

    删除/tmp/test偶数行,因此显示奇数行
    ]# sed '2~2d' /tmp/test
    # 1 
    # 3
    # 5

    不删除最后一行/tmp/test,并其显示行号
    ]# sed '$!d;=' /tmp/test
    5
    # 5

第二个测试文件/tmp/test_1

 ]# cat > /tmp/test_1
  # 1
  @ 2
  # 3
  @ 4   
  $ 5

 在$符号开头的行后添加两行文本'test_1'和'test_2'
]# sed '/^\$/a \test_1 \ntest_2' /tmp/test_1
 # 1
 @ 2
 # 3
 @ 4
 $ 5
 test_1
 test_2

  将/tmp/test_2中文件内容读到/tmp/test_1文件末尾
 ]# sed 'r /tmp/test w /tmp/test_2' /tmp/test_1
  # 1
  @ 2
  # 3
  @ 4
  $ 5
  # 1 
  # 2 
  # 3
  # 4
  # 5

  将非#开头的行的行首修改为#,且仅显示修改成功的行
 ]# sed -n 's/^[^#]/#/p' /tmp/test_1 
 # 1
 # 2
 # 3
 # 4
 # 5

 将所有非#的字符替换成#,并显示替换成功的行
]# sed -n 's/[^#]/#/gp' test_1 
###
###
###
###
###

将前三行所有非#字符替换成#,显示成功替换的行,并且显示4,5行
]# sed -n -e '1,3s/[^#]/#/gp' -e '4,5p' test_1 
###
###
###
@ 4
$ 5

高级使用:

sed1.png

在sed工作空间中,不仅仅只有parttern spacc,还有hold space,即保持空间。
以下是其使用:

    高级编辑命令(仅做了解):
         h H : 覆盖/追加从模式空间到保持空间;
         g G :覆盖/追加从保持空间到模式空间;
         n N :覆盖/追加读取匹配到的行的下一行至模式空间中;
         d:删除模式空间中的行;
         D: 删除模式空间中的所有行;
         x:交换两个空间的内容;
  • sed模式空间与保持空间

由于sed有两个内存空间,且开始都是空的,便可以允许数据之间的交换,此处只是初步知晓其操作即可。以下有实例:

example:

sed  'G' FILE:在原有的每行后方添加一个空白行;
sed  '1!G;h;$!d'  FILE:逆序显示文件的内容;
sed  'n;d'  FILE:显示奇数行;
sed  '$!N;$!D' FILE:取出文件后两行;

原创文章,作者:N25_sadan,如若转载,请注明出处:http://www.178linux.com/64133

赞 (0)
N25_sadanN25_sadan
上一篇 2016-12-18 22:01
下一篇 2016-12-19 07:35

相关推荐

  • 【福利招聘】 Base 上海 拍拍货(红杉领投,靠谱金融公司) 共5人

    公司简介 拍拍贷成立于2007年6月,全称为“上海拍拍贷金融信息服务有限公司”,总部位于国际金融中心上海,是中国首批网络信息借贷平台。 拍拍贷是一家由工商部门特批,获批“金融信息服务”的经营范围,得到政府认可的互联网金融平台。拍拍贷用先进的理念和创新的技术建立一个安全、高效、透明的互联网金融平台,规范个人贷款行为,让借入这改善生产生活,让借出者增加投资渠道。…

    Linux干货 2016-12-05
  • N22期-第4周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# cp -r /etc/skel /home/tuser1 [root@localhost ~]# chmod&nb…

    Linux干货 2016-09-05
  • 【Linux基础】文件管理类命令

    总结下linux系统文件管理类的命令 mkdir -> make dirtctories 创建目录 语法:mkdir [OPTION]… DIRECTORY… 常用选项-p: 自动按需创建父目录;-v: verbose,显示详细过程;-m MODE:直接给定权限;注意:路径基名方为命令的作用对象;基名之前的路径必须得存在;示例:~]# mkdir -p…

    Linux干货 2018-03-11
  • 磁盘分区管理之磁盘基础知识1

    1、磁盘基础知识 1.1 磁头 磁头是利用气流漂浮在盘片上,并没有接触到盘片,因而可以在各轨间高速来回移动,但如果磁头距离盘片太高,读取的信号就会太弱;太低又会磨到盘片表面,所以盘片表面必须相当光滑平整,任何异物和尘埃均会使得磁头摩擦到表面而造成数据永久性损坏。 硬盘读写磁头为了能在磁盘表面高速来回移动读取数据,则需漂浮在磁盘表面上,但是不能接触,接触就会造…

    Linux干货 2016-09-07
  • Linux 第一周总结

    一、描述计算机的组成及其功能。 计算机组成是由软件和硬件组成的。 硬件部分由cpu、主板、存储器、输入输出设备组成 Cpu:主要是解释计算机指令以及处理计算机软件中的数据。 主板:是微机最基本的也是最重要的部件之一,一般有BIOS芯片、I/O控制芯片、键和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件。 存储器:是存储程序和各…

    2017-07-02
  • 网络管理

    网络管理 本章内容 网络概念 OSI模型 网络设备 TCP/IP IP地址 配置网络 实现网络组 测试网络 网络工具 为linux网卡配置ip地址,不是给网卡配置地址,是给内核的网络功能配置,地址是属于内核。为内核配置即时生效,修改配置文件,是永久生效。ifconfig 配置信息,会立即生效,但是重启网络服务或主机,都失效。网络服务/etc/init.d/n…

    Linux干货 2016-09-05