三剑客练习

三剑客练习_第1张图片

过滤出一个文件的第二行,第三行

解决;1.sed  -n  '2,3p'  oldboy

        2. awk  'NR==2,NR==3' oldboy

        3.head  -3 oldboy|tail -2

过滤出含有oldboy字符串的行

解决; 1.grep -n 'oldboy' oldboy    (-n是显示在原文件中的行号)

          2.sed  -n  '/oldboy/p'  oldboy


三剑客练习_第2张图片

删除含有oldboy的行

解决:1.grep  -v  "oldboy" oldboy

          2.sed  '/oldboy/d'  oldboy


三剑客练习_第3张图片

将文件中oldboy换成oldgirl

答:1.sed  's#oldboy#oldgirl#g'  oldboy

      2.  vim 编进模式    :%s#oldboy#oldgirl#g


三剑客练习_第4张图片


三剑客练习_第5张图片


三剑客练习_第6张图片

问题1:取test.txt文件的第2行到第3行的内容。

解决:  head -3 test.txt|tail -2  (显示前三行,管道,显示前三行的后两行)

          sed -n '2,3p' test.txt        (-n,取消默认显示其他内容  p为打印 )

          awk  'NR==2,NR==3'  test.txt      (NR指定行)

问题2:过滤出含有root字符串的行※。

解决:grep -n "root"  test.txt  (-n为显示在源文件中的行号,可不加)

          sed  -n    '/oldboy/p'  oldboy  (-n为不显示其他)

问题3:删除含有root字符串的行※。

解决;  grep  -v  "root"  test.txt  (-v取反  ,就是不显示包含root的行)

      sed  '/root/d'  test.txt        (d  删除包含……的行)

问题4:取文件的第一列、第三列和最后一列内容,并打印行号※。

  解答:  awk  ‘{print NR $1,$3, $NF}’      $NF为最后有一列    NR显示行号 放在括号前加==数字,即只匹配第几行的第几列

问题5:取出Linux中执行ifconfig eth0后对应的IP地址(只能输出IP地址)。

问题6:过滤文件中第一列内容匹配root的字符串,把符合的行的最后一列输出

grep -w "root"|awk '{print $NF}'


三剑客自身有特长的:

grep  过滤查找内容 筛子

sed  取行 替换 删除  追加

awk  取列

cut 按列切割

-d 指定分隔符 -f指定哪列,多列用逗号

[root@oldboyedu ~]# cat a.txt

1 2 3 4 5 6 7 8 9 10

[root@oldboyedu ~]# cut -d" " -f1,3,5 a.txt

1 3 5

[root@oldboyedu ~]# cut -d" " -f3-5 a.txt

参数:

-F 指定分隔符

列:

2 第二列

NF 最后一列

$NF-1倒数第二列  需加()

[^r] 非r

[r] 以非r字符开头的

你可能感兴趣的:(三剑客练习)