^一行的开始 ^d以开头的 ^..1 第三个为1的字符 ^字符要放在匹配的字符前面
$一行的末尾 ^$ 表示空行 ^.$匹配一行一个字符的 $字符要放在匹配的字符后面 *匹配任意个字符 包括0个字符 .表示单个字符 \可以屏蔽一个特殊的字符 \*\.pas 这里的*是特殊字符,这样就表示*.pas这个文件 逗号可以分割不同的匹配字符如[S,s]表示S或者s都可以 -表示一个范围,[1-9],[a-z],[A-Z] [1-9 A-Z a-z]任意的字符或者数字 A\{2\}B 表示A出现了2次 AAB A\{4,\}B 表示A至少出现4次 AAAAB,AAAAAB A\{2,4\}B 表示A出现2-4次 AAB AAAB AAAAB [0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\} 0-999.0-999.0-999.0-999 查找文件的时候 find 用到的 find pathname -options [-print -exec -ok] -name -perm 权限 -user -group -mtime -n +n -atime -ctime 文件的时间 -size -nogroup 无有效属组的文件/etc/group 下不存在 -nouser 无有效用户的文件/etc/passwd -newer file1 !file 比文件一新但比文件2旧的文件 -type [bdcplf] 文件类型 find . -name "*.rep" -print 匹配了含有.rep的文件,-print 可以不用写 find . -name "[A-Z]*" -print 当前目录下以大写字母开头的 find . -perm 775 当前目录下以775权限的文件 -print 将查找到的文件输出到标准输出 -exec command {} \ 找到后执行一些shell命令 find . -type f -exec ls -l {} \ 查找到并且ls find . -name "*.log" -mtime +5 -ok rm {} \ 查找5天以前的到并且rm ok命令要求得到确认 xargs 和exec的区别 exec会发起多个进程,而xargs 只有一个进程减少系统资源的消耗 find . -prem -7 -print|xargs chmod o-w find . -prem -7 -print|xargs file 查看文件类型 grep 标准的,扩展的 grep [选项]基础正则表达式[文件] 正则表达式最好用“”括起来 -c 只输出有多少行匹配到了 -i 不区分匹配的大小写 -h 查询多文件时不显示文件名 -H 显示文件名 -l 查询多个文件时,只显示包含匹配字符的文件名 -n 显示匹配行和行信息 -s 不显示不存在的或无匹配的错误信息 -V 过滤掉表达式的部分 grep "^[^210]" 1.txt 非210开头的,2,1,0开头的行都被过滤掉 3-9开头的都可以显示出来 [[:upper:]] [A-Z] [[:alnum:]] [A-Z0-9a-z] [[:lower:]] [a-z] [[:space:]] 空格或tab键 [[:digit:]] [0-9] [[:alpha:]] [a-zA-Z] grep "5[[:digit:]][[:digit:]]" 1.txt 500-599的匹配 awk 命名的方式: awk [-F filed-spearator] 'commend' input-files awk 脚本 :所有的命名都放在一个文件里面 awk命令插入一个单独的文件 awk -f awk-script-file input-file 默认的分割符为空格 -F : 以:为分割符 awk -F : '{print $1"\t"$4}' i.txt print中是要用“”引起来字符串的 明白记录,分割,域。一条记录被分割就成了域 awk主要进行的操作就是对域进行操作 动作对数据进行处理 放在{}中内指明。一般用print,模式部分决定动作什么时候被触发 域:$0 $1...$n awk 'BEGIN {ptint "IP date\n"} {print $1"\t"$4} END{print "end of report"} 1.txt IP date $1 $4 end of report awk 中特殊的字符“+“”?“ 前者表示多个字符,后者表示一个字符 ~ 匹配 !~不匹配 cat i.txt|awk '$0 ~ /218.79.131.96/' awk '$0 !~ /210.12.12.30/' i.txt awk '{if($1=="210.12.12.30") print $0}' i.txt sed 不对原有的文件操作,先拷贝一个副本,所有操作在副本上操作 sed 命令格式 sed 脚本 :sed 选项 输入文件 sed 脚本 输入文件 :sed 选项 -f sed脚本文件 输入文件 如果没有输入文件,它会从标准输入得到 :sed脚本文件 选项 输入文件 选项 -n 不打印没匹配到 -c 下一个命令是编辑命令 -f 如果正在调用sed脚本 sed '2p' i.txt p就是打印 sed -n '2p' i.txt 第2行 不打印没匹配到的,只打印匹配到的 sed -n '1,2p' i.txt 打印2行 sed -n '/los/p' i.txt 匹配到los sed -n '2,/los/p' i.txt 从第3行开始到匹配的los结束 sed -n '/^$/=' i.txt 打印出空行的行号 sed -n -e '/^$/p' -e '/^$/=' i.txt 不能同时用-e 区分 sed '/aaaio/a\shenz' i.txt 会在找到aaaio后追加一行写上shenz 要分两行进行书写 sed '/aaaio/i\shenz' i.txt 会在找到aaaio前追加一行写上shenz sed '/aaaio/c\shenz ddd' i.txt 会在找到aaaio 替换成shenz ddd sed '1,2d' i.txt 会把1,2行给删除掉 sed 's/shenz/shenzhen/g' i.txt 所有shenz的地方全部替换 不加g时只在当次替换 sed 's/shenz/& shenzhen /p' i.txt 匹配到了shenz以后加上shenzhen sed 's/shenz/ shenzhen &/p' i.txt 匹配到了shenz之前加上shenzhen