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) 表示