一、test命令

-d :目录                                test  -d  /boot

-s :文件长度 > 0、非空            test  -s  a.txt

-f :正规文件                           test  -f  a.txt

-w :可写                                test  -w  a.txt

-r :可读                                 test  -r   a.txt

-x :可执行                              test  -x  a.txt

-L :符号连接

-u :文件有 suid 位设置

-z :空串

-n :非空串

-eq :等于                               [ 50 -eq 50 ]

-ne :不等于                            [ 50 -ne 60 ]

-gt :大于                                [ 50 -gt 40 ]

-lt :小于                                 [ 50 -lt 60 ]

-ge :大于等于                          [ 50 -ge 50 ]

-le :小于等于                           [ 50 -le 50 ]

比较数字,使用(( ))

其他测试使用 [[ ]]

包含数字比较的混合测试,使用[[ expr1 && expr2 ]] (( expr1 || expr2 ))

du -sh /boot/                          #查看文件大小

find / -type f                           #查看普通文件

find / -name "*.txt"                 #查看根下以.txt结尾的文件

find / -size +30M                     #找出根下大于30M的文件

find / -size +10M -size +30M    #找出根下大于10M且小于30M的文件

grep -rl  'root' /test                  #在/test下找出含root名的文件

二、grep作业

-n:显示行号

-o:只显示匹配的内容

-q:静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

-l:如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc

-A:如果匹配成功,则将匹配行及其后n行一起打印出来

-B:如果匹配成功,则将匹配行及其前n行一起打印出来

-C:如果匹配成功,则将匹配行及其前后n行一起打印出来

-c:如果匹配成功,则将匹配到的行数打印出来

-E:等于egrep,扩展

-i:忽略大小写

-v:取反,不匹配

-w:匹配单词

正则表达式及字符处理

目标文件/etc/passwd,使用grep命令或egrep

1.显示出所有含有root的行:

egrep "root" /etc/passwd

2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:

egrep -C 2 "bash" /etc/passwd

3. 显示出有多少行含有nologin。

egrep -c "nologin" /etc/passwd

4.显示出那些行含有root,并将行号一块输出。

egrep -n "nologin" /etc/passwd

5.显示出文件中

6.新建用户
abominable
abominate
anomie
atomize
编写正则表达式,将他们匹配出来

egrep "a.omi(nabl|nat|z|)e" /etc/passwd

7.建四个用户
Alex213sb
Wpq2222b
yH438PIG
egon666 egon
过滤出用户名组成是字母+数字+字母的行

egrep '^[a-Z]+[0-9]+[a-Z]+' /etc/passwd

8.显示出/etc目录下所有包含root的文件名

egrep -rl "/root" /etc

9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行

grep -v '^#' /etc/ssh/sshd_config |grep -v '^ *$'

三、Sed作业:以/etc/passwd文件为模板

1,删除文件每行的第一个字符。

sed -r 's/^(.)(.*)/\2/' /etc/passwd

2,删除文件每行的第二个字符。

sed -r 's/^(.)(.)(.*)/\1\3/' /etc/passwd

3,删除文件每行的最后一个字符。

sed -r 's/(.*)(.)$/\1/' /etc/passwd

4,删除文件每行的倒数第二个字符。

sed -r 's/(.*)(.)(.)$/\1\3/' /etc/passwd

5,删除文件每行的第二个单词。

sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\1\2\4/' /etc/passwd

6,删除文件每行的倒数第二个单词。

sed -r 's/([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)$/\1\3\4/' /etc/passwd

7,删除文件每行的最后一个单词。

sed -r 's/([^a-Z]+)([a-Z]+)$/\1/' /etc/passwd

8,交换每行的第一个字符和第二个字符。

sed -r 's/^(.)(.)(.*)/\2\1\3/' /etc/passwd

9,交换每行的第一个字符和第二个单词。

sed -r 's/^(.)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\4\2\3\1\5/' /etc/passwd

10,交换每行的第一个单词和最后一个单词。

sed -r 's/^([a-Z]+)([^a-Z]+)(.+)([^a-Z]+)([a-Z]+)$/\5\2\3\4\1/' /etc/passwd

11,删除一个文件中所有的数字。

sed -r 's/[0-9]+//g' /etc/passwd

12,删除每行开头的所有空格。

sed -r 's/^ *//g' /etc/passwd

13,用制表符替换文件中出现的所有空格。

sed -r 's/ /\t/g' /etc/passwd

14,把所有大写字母用括号()括起来。

sed -r 's/[A-Z]/(&)/g' /etc/passwd

15,打印每行3次。

sed 'p;p' /etc/passwd

16,隔行删除。

sed '1~2d' /etc/passwd

17,把文件从第2行到第5行复制到第7行后面。(选做题)

sed '1h;3,5H;7G' test

18,把文件从第2行到第5行移动到第7行后面。(选做题)

sed '2h;3,5H;7G' test

19,只显示每行的第一个单词。

sed -r 's/^([a-Z]+)([^a-Z]+)(.*)$/\1/' /etc/passwd

20,打印每行的第一个单词和第三个单词。

sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)(.*)$/\1\ \5/' /etc/passwd

四、awk作业

打印uid在30~40范围内的用户名。

awk -F: '$3>29&&$3<41{print $1}' /etc/passwd

打印第5-10行的行号和用户名

awk -F: 'NR>4&&NR<11{print $1,NR}' etc/passwd

打印奇数行

awk -F: 'NR%2{ print NR,$0}' /etc/passwd

打印偶数行

awk -F: '!(NR%2){print NR,$0}' /etc/passwd

打印字段数大于5的行

awk -F: 'NF>5{print NR,$0}' /etc/passwd

打印UID不等于GID的用户名

awk -F: '$3!=$4{print NR,$1}' /etc/passwd

if 结构

#!/bin/bash

var='/etc/init.d'
#var='/dev/sda'
if [ -d $var ] #如果$var是目录文件,则输出$var is directory
then
echo "$var is directory"
elif [ -b $var ] #如果$var是block块,则输出$var is block
then
echo "$var is block"
elif [ -f $var ] #如果$var是正规文件,则输出$var is regular file
then
echo "$var is regular file"
else #以上都不满足则输出unknow
echo 'unknow'
fi #fi表示if语句结束

接收输入参数的if语句

#!/bin/bash

if [ -d $ ]                                  #$1表示输入的第一个参数

    then

        echo "$1 is directory"

elif [ -b $ ]

    then

        echo "$1 is block"

elif [ -f $ ]

    then

        echo "$1 is regular file" else echo 'unknown'

fi

while循环

#!/bin/bash

login=

while [ $login !=  ]

do

    read -p 'please input your name: ' name                 #输入用户名

    read -p 'please input your password: ' pwd              #输入密码

    if [ -z $name ] || [ -z $pwd ]                                  #判断输入是否有输入为空,返回继续循环

        then

            continue

    fi

    if [ $name == 'mu' ] && [ $pwd == '' ]              #匹配正确,则输出登录成功

        then

            echo 'login sucessful'

            login=                                                       #方便退出循环 fi done

练习while循环

#!/bin/bash

var1=AAA

var2=BBB

var3=CCC

while :

do

    clear #清屏

    echo -e "A:${var1}\nB:${var2}\nC:${var3}" #

    temp=$var1

    var1=$var2

    var2=$var3

    var3=$temp

    sleep 

done
资料来源:http://www.cnblogs.com/linhaifeng/p/6602149.html#_label4

009--test命令和grep作业及Sed作业awk作业和循环结构的更多相关文章

  1. grep家族、sed、awk

    一.grep家族 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 在上一次的博客中已经使用过egrep通过正则表达式来匹配正确IP地址,这里的用法就不多说了. f ...

  2. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

  3. Linux高级命令 ==> find、grep、sed、awk

    一.find find命令用来在指定目录下查找文件.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进行显示. 语法 find path ...

  4. Shell常用工具find,grep,sed,awk,xargs命令

    最近学习shell命令,对grep,sed,awk命令有点混乱,故小结一下,巩固一遍. 注意:find , grep , sed, awk可使用基本正则表达式字符,find,grep,awk也支持扩展 ...

  5. 几个常用的文本处理shell 命令:find、grep、sort、uniq、sed、awk

    find 文件查找 查找txt和pdf文件 find . \( -name "*.txt" -o -name "*.pdf" \) -print 查找所有字母开 ...

  6. Linux基础-正则表达式整理---------------grep、sed、awk

    目录:    Ⅰ:正则表达式    Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...

  7. 三大文本处理工具grep、sed及awk的简单介绍

    grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...

  8. 正则、grep、sed、awk

    每次用到正则都要蛋疼一下,索性总结一下在这里. 正则 正則表達式主要分为基础正则和扩展正则.注意,正则和一般命令行输入的命令的通配符不同.正则仅仅使用于支持这样的表示法的工具,如:vi,grep,se ...

  9. linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

    本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www. ...

随机推荐

  1. Android PullToRefresh 下拉刷新,上拉很多其它,支持ScrollView,ListView,可方便拓展GridView,WebView等

    在写着东西之前.从网上找到非常多这方面的源代码,可是基本没有找到惬意的.包含在GitHub上的比較有名的Android-PullToRefresh-master.思来想去还是自己写吧.当然当中借鉴了一 ...

  2. 课程的正确步调——Leo鉴书74

    <Leo鉴书(第1辑)>已登陆百度阅读.今后还将不断更新,免费下载地址:http://t.cn/RvawZEx 本人第一次站上讲台是1999年,那会儿从中关村回到天津,在一个给成人做计算机 ...

  3. Git多账号登陆

        最近工作上遇到了使用git+repo的情况,需要用公司的邮箱和账号名重新申请ssh公私密钥,而我本身在github上也有一些开源项目,这里就是记录一下我是如何实现git多账号登陆的.   取消 ...

  4. U盘 文件被隐藏解决办法

    原地址:http://www.deyi.com/thread-351635-1-1.html 方法:运行cmd( 在任意目录都行)单个文件 :attrib c:\"要修改的文件夹名字&quo ...

  5. 记录魅族m1note编译TWRP recovery 3.1.0-0,包括mtk机型的处理方法

    1.安装64位linux系统,我用的是deepin os 15.3 2.将系统升级到最新版本 sudo apt-get update && sudo apt-get upgrade 3 ...

  6. adb的那点小事——360电视助手实现研究

    欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa 1.   前言 1.1.  行业背景简单介绍 当下,智能家居与智能穿戴设备无疑是继智能手机后两个最热门的方向.而智能家 ...

  7. mac上pydev

    转自:http://m.blog.csdn.net/blog/yangfu132/23689823 本来网上有教程,但是往往又一些不周到的地方,让人走了不少弯路. 使用 PyDev 进行调试 第一步: ...

  8. intellij IDEA 更新java后不用重启tomcat

    最近项目大了,每次修改后重启都要等和很久,那个煎熬…… 为了解决这个问题,万能的Google  装了这个  JREBEL 5.63最新的 安装步骤: 一.IDEA在线搜索 jrebel  安装 二.破 ...

  9. svgo

    SVG精简压缩工具svgo简介和初体验 SVG精简压缩工具svgo简介和初体验 « 张鑫旭-鑫空间-鑫生活 https://www.zhangxinxu.com/wordpress/2016/02/s ...

  10. Provided Maven Coordinates must be in the form 'groupId:artifactId:version'.

    [hadoop@hadoop1 bin]$ ./spark-shell --packages org.mongodb.spark:mongo-spark-connector_2.10-2.2.1 Ex ...