1. grep查找
grep 'string' filename; last | grep 'root'; 以行为单位。 利用参数-i(忽略大小写),-v(反相)等进行正则表达式; ‘’中可以为正则表达式。 2. 正则表达特别的 空行'^$',即只有行首和行尾;'^a'表示以a开头,'b$'表示以b结尾。 *表示重复前面的0个或多个字符; a*,aa*,分别匹配<space>,a,aa,...和a,aa,aaa...,即aa*匹配者必须有一个a; .表示除本身外任意字符,\.表示.。 3. 在shell中{和}具有特殊意义,故正则匹配n个字符时,需要转义{和}: \{n\}。 4. []表示一个:[a] 减号-表示连续:[0-9] 括号中的^表示反相:[^A-Z],非大写字母。 开始时的^表示开头; 5. sed工具(stream editor) sed -e '2,5s/A/B/g',将第2到5行中的A替换为B,/g全部替换。 s,替换;a,添加;d,删除;c,取代;i,插入; A,B可以是正则表达式。 6. awk命令 awk处理以空格或者Tab间隔的行内数据; last | awk '{print $1 "\t" $4}',该命令表示列出登录用户名和登录星期,两者Tab隔开。 其中$1表示第一块行数据,$2第二块,...,$0表示整个行数据。 awk有几个变量: NF表示改行有多少字段,即多少列;NR表示正在处理的行号; FS代表分割字符,默认空格,可以{FS=":"}修改。 awk可以处理逻辑运算: last | awk '$1=="ltn" {print $1}' 输出行第一字段为ltn的第一地段。 注意:因为awk先读取第一行,而后处理预设条件等,因此可能第一行是个例外,此时需要先调用BEGIN命令。 7. 一些命令 printf,格式输出; last最后登录者,30分钟自动刷新; ifconfig,IP等网络信息。 8. 比较两个文件diff,cmp diff text.txt text1.txt,比较详细列举不同之处,以行作单位; cmp text.txt text1.txt,默认列举第一处不同,以位作单位。