grep
grep [-acinv] [--color=auto] '查找字符串' filename
参数:
- -a:将binary文件以text文件的方式查找数据
- -c:计算找到‘查找字符串’的次数
- -i:忽略大小写
- -n:顺便输出行号
- -v:反向选择,即显示出没有‘查找字符串’内容的那一行
- –color=auto:将找到的关键字部分加上颜色显示
‘查找字符串’:
- 查找特定字符串
- 利用中括号[]来查找集合字符
- 行首与行尾字符^$
- 任意一个字符.与重复字符*
- 限定连续RE字符范围{}
特殊符号 | 代表意义 |
---|---|
[:alnum:] | 代表英文大小写字符及数字,即0-9,A-Z,a-z |
[:alpha:] | 代表任何英文大小写字符,即A-Z,a-z |
[:blank:] | 代表空格键与[tab]键 |
[:cntrl:] | 代表键盘上面的控制按键,包括CR,LF,Tab,Del等 |
[:digit:] | 代表数字,0-9 |
[:graph:] | 除了空格符(空格和[tab])外的所有其他按键 |
[:lower:] | 小写字符,a-z |
[:print:] | 代表任何可以被打印出来的字符 |
[:punct:] | 代表标点符号,即” ’ ? ! ; : # $ |
[:upper:] | 代表大写字符 A-Z |
[:space:] | 代表任何会产生空白的字符,包括空格符 [Tab] CR等 |
[:xdigit:] | 代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符 |
RE字符 | 意义 |
---|---|
^word | 待查找的字符串(word)在行首 |
word$ | 待查找的字符串(word)在行尾 |
. | 代表一定有一个任意的字符 |
\ | 转移字符 |
* | 重复零个到无穷多个的前一个字符 |
[list] | 从字符集合的RE字符里面找出想要选取的字符 |
[n1-n2] | 从字符集合的RE字符里面找出想要选取的字符范围 |
[^list] | 从字符集合的RE字符里面找出不要的字符串或范围 |
\{n,m\} | 连续n到m个的前一个RE字符,若为\{n\}则是连续n个的前一个RE字符,若为\{n,\}则是连续n个以上的前一个RE字符 |
扩展正则表达式 egrep
or grep -E
RE字符 | 意义 |
---|---|
+ | 重复一个或一个以上的前一个RE字符 |
? | 零个或一个的前一个RE字符 |
| | 用 或 的方式找出数个字符串 |
() | 找出“组”字符串 |
()+ | 多个重复组的判别 |
sed
可以将数据进行替换、删除、新增、选取特定行等功能。
搭配cat
和管道处理文本文件
sed [-nefr] [动作]
参数:
- -n:使用安静模式
- -e:直接在命令行模式上进行sed的动作编辑
- -f:直接将sed的动作写在一个文件内,-f filename
则可以执行filename内的sed动作
- -r:sed的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)
- -i:直接修改读取文件内容,而不是由屏幕输出。
动作说明: [n1 [,n2]] function
例如动作需要在10行到20行之间进行,则“10,20[动作行为]”
function参数:
- a: 新增,a的后面可以接字符串,这些字符串会在目前的下一行出现
- c:替换,c的后面接字符串,替换n1,n2之间的行!
- d: 删除
- i: 插入,i的后面接字符串,会在目前的上一行出现
- p: 打印,将某个选择的数据打印出来,通常配合参数sed -n使用
- s: 替换,可以直接进行替换的工作,通常这个s的动作可以搭配!!
部分数据的查找并替换的功能:
sed 's/要被替换的字符串/新的字符串/g'
awk
awk也是一个好用的数据处理工具。相比于sed常常用作于一整行的处理,awk则比较倾向于将一行分成数个“字段”来处理。因此,awk相当适合处理小型的数据!
awk '条件类型1{动作1} 条件类型2{动作2}...' filename
例子:last -n 5 | awk '{print $1 "\t" $3}'
流程:
- 读入第一行,并将第一行的数据填入
0(代表一整行数据)、
1(第一列)、$2等变量中;
- 依据条件类型的限制,判断是否需要进行后面的动作
- 做完所有的动作与条件类型
- 若还有后续的“行”的数据,则重复上面1-3的步骤,直到所有的数据都读完为止。
awk以行为一次处理的单位,以字段为最小处理单位。