linux学习心得第5篇

本文详细介绍了Linux环境下常用命令行工具,包括cat、less、more等用于文件查看,head、tail、cut、sort、wc等用于文本处理及grep、egrep、uniq等用于正则表达式搜索的技巧,旨在帮助用户高效地进行文件管理和文本分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

前7章的一些重点总结:
 
cat 查看文件的方式是dump的,将整个文件倾泻到屏幕上的,如果内容比较长的话,通常也就会滚屏而过了
less,more 是分页查看文件的
less 是可以根据你所设定的模式来搜索字符串,可以向前、后翻页。这个经常用
more 默认是只能向后翻页
head   # head -n 20 查看文件的前20行
tail   # tail -n 20 查看文件的尾部后20行
       # tail -f    查看完毕后,并不结束,而是等待显示新增的内容,所以经常用来查看一个正在处于增长状态的日志信息,crtl+c来推出
cut 命令用来将文件切成N段,并取其中的某些特定字段的
      cut -d 指定分隔符,以什么为依据来分隔
          -f[n-m] 指定我们切割后要选取的段号,通常和-d搭配使用
      例子:
          cut -d: -f1 /etc/passwd
         root
         bin
         daemon
         adm
         lp
         ……
          -c[n-m]指定从第几个字符到第几个字符
          如 # cut -c2-6 /etc/passwd
             表示选取/etc/passwd文件中任一行中第二到第六个字符
wc 命令 ,做统计一个文件中出现的行数、字数、字节数 
        例子:我们要统计/etc/下目录的个数
      # ls -l /etc | grep -v "^total" | wc -l
这样就统计出来在/etc下文件的个数

sort命令 排序命令
    可以将一个文本文件中的内容按照一定的顺序<默认升序>进行排序,按字符a~z的顺序,注意sort排序功能是在缓存中进行的,例如sort /etc/passwd
系统先将/etc/passwd这个文件放入缓存中,然后排序、显示到屏幕上。这对原文件没有任何影响。

   如果我们要保存我们拍过顺序的文件,可以使用输出重定向>
   sort /etc/passwd > ./sortpasswd 

   sort -o /etc/passwd /tmp/passwd.sort 保存
        -r 逆序排序
        -n 以数值来排序 如果不指定-n的话,我们对待0~9以ASCII码得形式来排序,默认以ASCII字符串为标准来排序。
        -f 忽略大小写的
        -u 把重复的行给去了 注意空白字符对我们来说是不可见的,但是对sort是可见的,注意空白的字符。
        -t : 可以指定以什么来分段的,这里指定以:来分段的,但是默认是以空格来分段的
        -k 可以指定以第几段来排序,一般和-t配合使用
   例子:以/etc/passwd中UID大小来排序
       sort -n -t : -k 3 /etc/passwd

uniq 命令的 也是可以排序的,而且是除去重复行来排序的,注意这里的重复行是指连在一起的,相同的才叫重复行, # sort sort.txt | uniq
    但是uniq也有自己的一些特点,他可以显示出来每一行所被重复的次数,这时运用命令 "uniq -c"来显示特定行所重复的次数,运用"uniq -u"表示只显示没有重复的行,而运用 "uniq -d"表示只显示重复的行


grep: 全局搜索正则表达式,并打印之
grep [option] 'pattern' filename

 在文本文件filename中去寻找匹配'pattern'格式的字符串,并将包含该字符串的那一行都显示出来

grep仅仅是支持基本的正则表达式,如果要让其支持扩展的需要-E选项
egrep=grep -E 
fgrep[fast grep]=grep -F

   "^$"这个是表示空白行,以开头开头,以结束结束

   grep -v  显示出不被匹配到的语句
        -i  忽略大小写
        -A  显示上下文的
        -B
        -C
        --color= auto<自动加颜色> never<不加颜色>   默认是会用颜色高亮的显示出来匹配到的串
       例子:
        #grep --color=audo 'r..t' /etc/passwd
    会将/etc/passwd中符合'r..t'模式的字符串所在行显示出来,并且所匹配的字符串默认用红色来注明。如果要改颜色的话
        # export GREP_COLOR='01;32'
        #grep --color=audo 'r..t' /etc/passwd
    会将/etc/passwd中符合'r..t'模式的字符串所在行显示出来,并且所匹配的字符串默认用绿色来注明。
         3前景色 2表示颜色
         1表示红色 2表示绿色 3表示蓝色
         颜色是定制的,但是要导出个变量GREP_COLOR

      例子: 我想在/etc目录下查找一个文件,文件名字中包含了pass字符串
       #ls /etc | grep --color=auto 'pass'
    passwd
    passwd-
       #
   所以我们的grep通常和管道命令结合起来使用,此外我们还知道,在我们执行任何一个命令的时候,当我们这个命令执行结束以后,会有命令本身的返回值和命令是否成功的状态值<echo $?查看 0表示成功1表示失败> 。但是在有些时候我们仅仅需要的是命令执行后的状态,而不需要执行结果,这是我们需要重定向,如:
            # grep --color=auto 'r..t' /etc/passwd > /dev/null
            # echo $?
            0
                      其中/dev/null是一个黑洞,可以塞任何东西,这条命令是通常用来抛弃掉返回值,但仍旧寻得到状态值用的
            例子:假如我想从/etc/passwd这个文件中查找有没有一个叫做'stu'的用户,如果使用 #grep 'stu' /etc/passwd > /dev/null的话,也会将student这个用户给找出来,然后#echo $? 也显示为0.所以这样用是不恰当的,应当使用:
         # cut -d: -f1 /etc/passwd | grep "^stu\>"
         stu
         #
   
   egrep
      不支持\{m\} 、\{m,n\}、\(……\) 这种表达式,而是将其化简了不需要\ ,取而代之的是{m}、{m,n}
        例如:# egrep 'r.{2}t' /etc/passwd
        不使用 # egrep 'r.\{2\}t' /etc/passwd 这种模式        
        但是 扩展的()和\(……\)意义是不样的 \(……\)在标准正则表达式中表示引用
             而扩展的()的用法如下:
               # egrep 'l(ov){2,3}er' /etc/passwd
                 表示在/etc/passwd这个文件中寻找 lovovover lovover 这两个字符
               但是在标准正则表达式中是无法用# grep 'l(ov)\{2,3\}er' /etc/passwd 命令的
      另外,我们在扩展表达式中可以用 +  ? 来表示匹配的次数的
       ?  ----->表示0或1次 如a?root 前面的a是可有可无的,但是broot是可以匹配的
       +  ----->表示1~任意次
       | 或者
        例子:让你在文件中找到
        "like you liker"或"love you lover"
         # egrep "l(ik)|(ov)e "
     注意,这一点弄的不好!!注意查资料

正则表达式<reg>
怎么强调正则表达式的作用都不为过

1 基本的正则表达式 grep
2 扩展的正则表达式 egrep

这两类支持的元字符是不同的

基本的正则表达式
  元字符:就是一些 它所表示的意思不是他本身的意义 的一些字符
   例如 * 、globing<文件名通配>{注意:但是正则表达式中的元字符和文件通配符的意义往往不一样}
  
   1> .  表示任意单个字符
         例如:r..t 和它匹配的有root rabt 等等
      [] 例如 [abc]root 则aroot broot croot都是匹配的。 而abroot中的因后面broot字符是匹配的,所以abroot是匹配的
              [^abc]root 表示用来匹配除了abc之外的字符  ^表示非
     
   2> .*   表示任意长度任意字符 正则表达式中*表示做匹配次数的,默认是任意个 >=0
         例如 a*root 和它匹配的有 aroot root aaroot aaaroot 但是abroot是不能匹配的,如果是
a.*root 则 abroot就是匹配的
   3> p\{n\} 这个可以精确的匹配确定字符p并个数n的方式  例子:a\{2\}root 和它能匹配的就只能是aaroot
   4> p\{m,n\} 这个表示匹配确定字符p,不少于m次,不多于n次
     例子: a\{3,4\}root 所以和它匹配的就有:
aaaroot aaaaroot
     p\{n,\} 这个表示匹配字符P最少n次,多则不限
   5> 锚钉符
     ^root 表示root必须要出现在行首
      root$ 表示root必须出现在行尾
     \<root 表示root必须出现在词首
     root\> 表示root必须出现在词尾
     \<root\> 表示root出现在词首和词尾
     \broot=\<root
     root\b=root\>
     \(...\) 前项引用
    
      例子:
      要匹配 love …… lover 的正则表达式是     \(love\).*\1r ----> \1 表示引用\(love\)中    的love字符
      要同时匹配 like you liker 和 love you lover

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值