grep
常用参数:
- -v 显示不被pattern匹配到的行
- -i 忽略字符大小写
- -n 显示匹配的行号
- -c 统计匹配的行数
- -o 仅显示匹配到的字符串
- -E 使用ERE,相当于egrep
使用举例:
- 查找文件内容包含root的行数 grep -n root test.txt
- 查找文件内容不包含root的行 grep -nv root test.txt
- 查找以s开头的行 grep ^s test.txt
- 查找以n结尾的行 grep n$ test.txt
sed
常用动作:
- a:新增 sed -e ‘4 a newline’ (在第四行后新增newline)
- c:取代 sed -e ‘2,5c No 2-5 number’ (2到5行的数据替换成No 2-5 number)
- d:删除 sed -e ‘2,5d’ (删除2到5行的数据)
- i:插入 sed -e ‘2i newline’ (在第二行后插入newline)
- p:打印 sed -n ‘/root/p’
- s:取代 sed -e ‘s/old/new/g’
查看帮助:
- man sed
- sed -h
- 在第四行后添加新字符串 :sed -e ‘4a newline testfile’ test.txt
- 在第二行后加上newline:sed ‘2a drink tea’ test.txt
- 在第二行前加上newline:sed ‘2i drink tea’ test.txt
- 全局替换:sed -e ‘s/root/hello/g’ test.txt
- 直接修改文件内容:sed -i ‘s/root/hello/g’ test.txt
awk
常用参数:
- FILNAME awk浏览的文件名
- BEGIN 处理文本之前要执行的操作
- END 处理文本之后要执行的操作
- FS 设置输入域分隔符,等价于命令行-F选项
- NF 浏览记录的域的个数(列数)
- NR 已读的记录数(行数)
- RS 控制记录分隔符
- $0 整行记录
- $1 表示当前行的第一个域
举例:
- 搜索/etc/passwd有root关键字的所有行,并显示对应的shell
awk -F : ‘/root/{print $7}’ /etc/passwd - 打印/etc/passwd/的第二行信息
awk -F : ‘NR==2{print $0}’ /etc/passwd - 使用begin加入标题
awk ‘BEGIN{print “BEGIN BEGIN”}{print $1,$2}’ /etc/passwd - 自定义分隔符
echo “111 222|333 444|555 666”|awk ‘BEGIN{RS="|"}{print $0}’