文本处理三剑客笔记整理
1. grep
功能:文本过滤
- 基本用法:
grep [OPTIONS] PATTERN [FILE...] - 元字符:
^:以什么开头$:以什么结尾.:任意单个字符*:前面的字符出现0次或多次+:前面的字符出现1次或多次(扩展正则)?:前面的字符出现0次或1次(扩展正则){}:前面的字符出现指定次数(扩展正则,如{n,m})|:选择,匹配左边或右边的表达式(扩展正则)[]:字符集合,匹配集合中的任意字符\b:单词边界():分组(扩展正则)
- 选项:
-E:使用扩展正则表达式-i:忽略大小写-v:反向选择,只显示不匹配的行-n:显示匹配的行号-A n:显示匹配行及之后的n行-B n:显示匹配行及之前的n行-C n:显示匹配行及前后各n行-o:只显示匹配到的字符串
2. sed
功能:文本替换
- 基本用法:
sed [OPTION]... {script-only-if-no-other-script} [input-file]... - 内部命令:
p:打印d:删除a:追加i:插入s:替换c:整行替换
- 选项:
-i:直接修改文件内容-r或-E:使用扩展正则表达式
- 替换语法:
sed 's/原字符串/新字符串/[g]' 文件名g:全局替换- 数字:指定替换第几个匹配项
- 示例:
sed -i -r '/^zhang|^feng/ s/caojie/zhangjie/' name.txt#将文件中以zhang或feng开头的行中的caojie替换为zhangjie
sed -i '/^SELINUX=/ c SELINUX=disabled' config#将SELINUX行整行替换为SELINUX=disabled
3. awk
功能:文本截取
- 基本用法:
awk [options] 'program' file... - 程序结构:
BEGIN{...} pattern {action} END{...} - 内建变量:
NR:当前记录数(行号)NF:当前记录中的字段数$0:当前记录$1,$2, ...:当前记录的第1个、第2个字段...FS:输入字段分隔符(默认为空白字符)OFS:输出字段分隔符(默认为一个空格)
- 选项:
-F fs:指定输入字段分隔符-v var=value:定义awk变量
- 数组:支持关联数组,下标可以是字符串
- 示例:
awk -F: '{print $1, $3, $NF}' /etc/passwd#打印/etc/passwd文件的用户名、用户ID和最后一个字段
awk -v var=$1 -F: '$1==var{print NR,$0}' /etc/passwd#根据传入的用户名打印该用户的行号和整行内容
通配符
*:任意个任意字符?:单个任意字符{n..m}:在shell中通配符不直接支持,但在某些上下文中(如for循环)表示范围
1097

被折叠的 条评论
为什么被折叠?



