grep
-
--color=auto
会高亮匹配的关键字 -
-o
只显示匹配的关键字 -
-n
显示行号 -
grep -E
和egrep
都是按照正则匹配 -
-l
只显示匹配的文件名称 -
-A num
打印匹配行的后 num 行,-B num
打印匹配行的前 num 行,-C num
打印匹配行的前后 num 行
cut
-
-f num
输出以空格分隔的第 num 列 -
-d"char"
以 "char" 替换默认的制表符为列的分隔符 -
-c
指定字符的宽度
sed
-
sed -i 's/pattern/replace/g' filename
文本替换 -
sed -i '/pattern/d' filename
会删除匹配的行 -
sed -i 's/pattern/[&]/g'
& 表示所有的匹配 -
sed -i s/\(pattern1\)\(pattern2\)/\1 \2/g
\1 \2 分别表示子匹配
awk
-
awk 'BEGIN{ print "start"} pattern { commands } END{ print "end"}' filename
- 首先执行 BEGIN 块
- 再遍历每一行,执行 pattern { commands }
- 最后执行 END 块
- NR 表示当前行号
NF 表示当前行有多少个通过空格划分的单词
$0 表示当前行所有字符
$1 表示第一个单词
$2 表示第二个单词 -
-v var=$extern_var
导入外部变量 -
-F:
指定分隔符 - 可以通过
getline
显示读取一行
文本切片和替换
Script
#!/bin/bash
var="hello world ~"
shell=${var/world/shell}
echo $var
echo $shell
echo ${var:6:5}
echo ${var:(-1)}
Note
- 切片的语法为
${var:start_position:length}
- 最后一个位置的 position 可以用 (-1) 表示