grep
| | |
---|
-c | count | 只输出匹配行的计数 |
-i | ignore | 不区分大小写 |
-w | whole word | 精确匹配 |
-v | invert | 显示不匹配的所有行 |
-e | egrep | 使用正则表达式 |
-n | | 显示行号 |
-r | | 递归查找 |
-l | | 不显示匹配行,只显示匹配文件 |
#!/bin/bash
grep 'root' /etc/passwd
grep -n 'root' /etc/passwd
grep -v 'root' /etc/passwd
grep 'root'
grep -r 'root'
grep -l -r 'root'
grep -w 'root' /etc/passwd
awk
功能:通过正则表达式得到需要的行列信息
| | |
---|
-F | | 指明分隔符 |
“” | | 输出空白字符 |
FS | input field seperator | 输入字段分隔符,与-F选项作用相同,默认为空白字符 |
OFS | output field seperator | 输出时分隔字符,默认为空白字符 |
RS | input record seperator | 输入时得换行符,默认为\n换行符 |
ORS | utput record seperator | 输出时的换行符,默认为\n换行符 |
NF | number of field | 字段数量 |
NR | number of record | 统计行数,即给每行显示行数,命令后跟的所有文件将统一合并计数 |
#!/bin/bash
awk -F: '{print $1,$2}' /etc/passwd
awk -F: '{print "hello" $1}' /etc/passwd
awk -F: '{print}' /etc/passwd
tail /etc/passwd |awk -F: '{print ""}'
awk -v FS=":" '{print $1,$3}' /etc/passwd
awk -v FS=":" -v OFS=":" '{print $1,$3}' /etc/passwd
awk -v RS=":" '{print}' /etc/passwd
awk -v RS=":" -v ORS="#" '{print}' /etc/passwd
awk '{print NF}' /etc/fstab
awk '{print NR}' /etc/fstab /etc/issue
awk 'BEGIN{print 4*5}'
sed
功能:通过正则表达式完成指定关键字的过滤、截取、修改等操作
特点:
- sed属于一个流线式的非交互式的编辑器
- 在输入sed命令后,结果会在屏幕上输出
- 在不用-i修改文件之前,sed不会改变文件内容
| |
---|
p | 查看文件 |
d | 删除内容 |
a | 在行下追加文字 |
i | 在行上插入文字 |
s | 替换单词 |
c | 替换整行 |
y | 替换字符 |
-i | 修改文件(不加则所有修改都不生效) |
-e | 执行多个条件 |
-f | 调用条件文件 |
-n | 抑制内存输出 |
\t | tab键 |
\n | 换行 |
/number | 第num个 |
/g | 全文 |
/w | 写入另一个文件 |
/p | 打印 |
/r | 正则 |
#!/bin/bash
sed p /etc/passwd
sed 'ahello' /etc/passwd
sed '5ahello' /etc/passwd
sed '3,5ahello' /etc/passwd
sed '5ihello' /etc/passwd
sed '5ahello\nworld' /etc/passwd
sed '1d' /etc/passwd
sed 's/root/abcd/' /etc/passwd
sed '1chello world' /etc/passwd
sed 'y/r/R/' /etc/passwd
sed -e '1chello world;y/r/R/' /etc/passwd
sed 's/root/abcd/g' /etc/passwd
sed 's/root/abcd/g /etc/passwd2' /etc/passwd