美文网首页
Linux59期day18

Linux59期day18

作者: A宽宽 | 来源:发表于2019-04-20 20:47 被阅读0次

sed后向引用补充:

1.获取网卡ip地址:ip a s eth0
方法1---sed正则

[root@oldboy59 ~]# ip a s eth0 |sed -n '3p'|sed 's#^.*t ##g'|sed 's#/.*$##g'
10.0.0.201

方法2---sed后向引用

[root@oldboy59 ~]# ip a s eth0 |sed -n '3p'|sed -r 's#^.*t (.*)/.*$#\1#g'
10.0.0.201

2.取 stat /etc/hosts结果中的644

[root@oldboy59 ~]# stat /etc/hosts |sed -n '4p'|sed -r 's#^.*\(0([0-9]+)/.*$#\1#g'
644
后向引用

awk (三剑客老大)

awk是三剑客的老大,擅长取列、取行、统计计算

1.awk的格式

awk '找谁{干啥}' 文件
awk '条件{动作}' 文件------常用的动作是print(显示)

2.awk执行过程

awk执行过程

3.awk取行与取列

取行:(record记录),在awk下可以根据你的描述找到这一行,如:awk 'NR==1' 文件;如果不知道要的是那一行,可以用//进行过滤,如:awk '/oldboy/' 文件;这里的NR表示Number of Record(记录号行号),记住一定要大写,Linux的等于就是==

取出指定行的内容:

[root@oldboyedu59 /oldboy]# awk 'NR==1' lidao.txt
101,oldgirl,CEO
[root@oldboyedu59 /oldboy]# awk 'NR==2' lidao.txt
101,hello,WC

取出文件中包含old的文件:

[root@oldboyedu59 /oldboy]# awk '/old/' lidao.txt
101,oldgirl,CEO
[root@oldboyedu59 /oldboy]# 

取列:( filed 字段)
-F :指定awk的分隔符

取出oldboy.txt中的所有第1列

[root@oldboyedu59 /oldboy]# awk '{print $1}' oldboy.txt 
my
our
my

当要所显示几列时,可以通过","隔开进行显示,也可以在显示列之间添加特殊符号“@”

[root@oldboyedu59 /oldboy]# awk '{print $1,$3,$5}' oldboy.txt 
I oldgirl 
I linux. 
I badminton,ball ball
[root@oldboyedu59 /oldboy]# awk '{print $1"@@"$3"@@"$5}' oldboy.txt 
I@@oldgirl@@
I@@linux.@@
I@@badminton,ball@@ball

显示oldboy.txt的第4行的第1列 第2列和第4列

[root@oldboyedu59 /oldboy]# awk 'NR==4{print $1,$2,$4}' oldboy.txt 
I like ball

awk默认是以空格为分隔符,但有时候我们取出来的列中有我们不需要的内容,比如逗号,在逗号之后接其他的内容,这时候我们可以使用awk的参数-F(指定awk的分隔符),如:
取出以下内容中的lidao和918391635
echo 'I am lidao,my qq is 918391635' >/oldboy/fs.txt
以下命令执行之后找显示除了多余的“,my”,这是因为awk默认是以空格为分隔符的

[root@oldboyedu59 /oldboy]# awk '{print $3,$6}' fs.txt 
lidao,my 918391635

使用awk的参数-F指定以逗号或空格为分隔符,就可以,如下

[root@oldboyedu59 /oldboy]# awk -F',| ' '{print $3,$7}' fs.txt 
lidao 918391635
[root@oldboyedu59 /oldboy]# awk -F'[, ]' '{print $3,$7}' fs.txt 
lidao 918391635

4、过滤

在awk中什么可以作为条件?
比较、正则、范围、特殊

找出/etc/passwd第3列中大于999的行

[root@oldboy59 ~]# awk -F':' '$3>999' /etc/passwd
oldboy:x:1000:1000::/home/oldboy:/bin/bash
注:显示第3列用print,只说第3列如果是比大小,直接用$3即可

找出/etc/passwd第4列中大于0并且小于1000的行

[root@oldboy59 ~]# awk -F':' '$4>0 && $4<1000' /etc/passwd

相关文章

  • Linux59期day18

    sed后向引用补充: 1.获取网卡ip地址:ip a s eth0方法1---sed正则 方法2---sed后向引...

  • Linux59期day12

    创建1个新目录他的硬链接数是2? 为何? 在这个目录下面创建1个新目录 /lidao/alex/ lidao目录...

  • Linux59期day05

    了解:/oldboy和/oldboy/ 区别?大部分命令是一样的./oldboy 表示oldboy目录和下面的内...

  • Linux59期day04

    Linux基础操作与命令 快捷键 Ctrl+c 取消当前操作 Ctrl+l 清屏 Ctrl+a 光标移到行首 C...

  • Linux59期day08

    1、vim编辑器的快捷键光标移动操作: l:光标向右移动h:光标向左移动j:光标向下移动k:光标向上移动gg或1G...

  • Linux59期day09

    vim 故障 1.vim 执行过程 2.故障产生原因 a.同时打开一个文件b.之前的文件没有正常保存退出导致的 3...

  • Linux59期day10

    文件类型: 扩展名:.avi .txt .log .shWindows:系统根据不同的扩展名,区分不...

  • Linux59期day03

    什么是救援模式? 解决故障 root密码忘记\服务器无法开机 linux磁盘分区方案 1.通用-数据不重要的时候...

  • Linux59期day02

    什么是操作系统? 人与硬件设备的中介/桥梁 Linux操作系统的组成? 外围应用程序 命令解释器 shell 系...

  • Linux59期day16

    正则表达式(Regular Expression RE) 什么是正则表达式: 发明一套符号,不同的符号有不同的...

网友评论

      本文标题:Linux59期day18

      本文链接:https://www.haomeiwen.com/subject/caolgqtx.html