linux搜索命令

一,grep

Syntax: grep [options] pattern [files]

搜索在文件中包含pattern的所有的行    
#grep John /etc/passwd
搜索在文件中不包含pattern的所有的行    
#grep -v John /etc/passwd
搜索在文件中包含pattern的行数
#grep -c John /etc/passwd
忽略大小写
#grep -i John /etc/passwd
搜索子目录,展现文件名和行
#grep -ri john /home/users
搜索子目录,只展现文件名
#grep -ril john /home/users

二,grep与正则的配合

行的开始^
grpe "^aa" message.logs
行的结尾$
grpe "aa$" message.logs
计算空行数
grep -c "^$" message.logs

三,find

Syntax: find [pathnames] [conditions]

查找文件名包含特定的字符
# find /etc -name "*mail*"
查找文件大小大于100M
#find / -type f -size +100M
查找文件在最近的60天未被修改
# find . -mtime +60
查找文件在最近的2天内被修改的
# find . –mtime -2
查看以.tar.gz并且大于100M的文件,并且删除
# find / -type f -name *.tar.gz -size +100M -exec ls -l {}
\;
# find / -type f -name *.tar.gz -size +100M -exec rm -f {}
\;

四,sed

Syntax: #sed ‘ADDRESSs/REGEXP/REPLACEMENT/FLAGS’ filename
Syntax: #sed ‘PATTERNs/REGEXP/REPLACEMENT/FLAGS’ filename

  • s is substitute command
  • / is a delimiter
  • REGEXP is regular expression to match
  • REPLACEMENT is a value to replace

FLAGS选项:

  • g 用REPLACEMENT代替所有的 REGEXP
  • n 可以是任意数字,用REPLACEMENT代替REGEXP的第n个实例。
  • p 打印匹配后的行
  • i 忽略大小写
  • w 将匹配后的行写入到文件中

我们也可以用( one of @ % ; : )的其中一个代替/

使用Linux-Unix替代Linux,只替代第一次
$ sed 's/Linux/Linux-Unix/' thegeekstuff.txt
使用Linux-Unix替代Linux,替代所有的
$ sed 's/Linux/Linux-Unix/g' thegeekstuff.txt
使用Linux-Unix替代Linux,替代第2次
$ sed 's/Linux/Linux-Unix/2' thegeekstuff.txt
将替换后的行输出并打印 ,-n 表示取消默认输出
$ sed -n 's/Linux/Linux-Unix/gpw output' thegeekstuff.txt
删除所有的以#开头的行  -e 表示在文本中编辑
$ sed -e 's/#.*//' thegeekstuff.txt

五,cut

Cut命令用于展现文本中的特定列。

Syntax: cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]

  • -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
  • -c :以字符为单位进行分割。
  • -d :自定义分隔符,默认为制表符。
  • -f :与-d一起使用,指定显示哪个区域。
  • -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。

    从冒号(:)分隔文件中展现第一个字段.
    $ cut -d: -f 1 names.txt
    从冒号(:)分隔文件中展现第一到三个字段.
    $ cut -d: -f 1,3 names.txt
    展现每行的前8个字符
    $ cut -c 1-8 names.txt
    展现可用内存
    free | tr -s ‘ ‘ | sed ‘/^Mem/!d’ | cut -d” “ -f2

六,awk

Syntax:awk ‘/search pattern1/ {Actions}
/search pattern2/ {Actions}’ file

  • search pattern is a regular expression.
  • Actions – statement(s) to be performed.
  • several patterns and actions are possible in Awk.
  • file – Input file.
  • Single quotes around program is to avoid shell not to interpret any of its special characters