Note For Linux By Jes(6)-正规表示法与文件格式化处理
2015-08-22 15:43
429 查看
基础正规表示法:
sed 工具:以行为单位的新增/删除功能,以行为单位的取代与显示功能,部分数据的搜寻并取代的功能,直接修改文件内容(危险动作)
文件的格式化与相关处理:
格式化列印:printf
awk:好用的数据处理工具
件比对工具:diff,cmp,patch(补丁)
文件列印准备:pr
特殊符号 | 代表意义 |
[: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:] | 代表标点符号(punctuation symbol),亦即:"' ? ! ; : # $... |
[:upper:] | 代表大写字节,亦即A-Z |
[:space:] | 任何会产生空白的字节,包括空白键,[Tab], CR 等等 |
[:xdigit:] | 代表16 进位的数字类型,因此包括:0-9, A-F, a-f 的数字与字节 |
RE 字符 | 意义与范例 |
^word | 意义:待搜寻的字串(word)在行首! 范例:搜寻行首为# 开始的那一行,并列出行号 grep -n '^#' regular_express.txt |
word$ | 意义:待搜寻的字串(word)在行尾! 范例:将行尾为! 的那一行列印出来,并列出行号 grep -n '!$' regular_express.txt |
. | 意义:代表『一定有一个任意字节』的字符! 范例:搜寻的字串可以是(eve) (eae) (eee) (e e),但不能仅有 (ee) !亦即e 与e 中间『一定』仅有一个字节,而空白字节也是字节! grep -n 'e.e' regular_express.txt |
\ | 意义:跳脱字符,将特殊符号的特殊意义去除! 范例:搜寻含有单引号' 的那一行! grep -n \' regular_express.txt |
* | 意义:重复零个到无穷多个的前一个RE 字符 范例:找出含有(es) (ess) (esss) 等等的字串,注意,因为* 可以是0 个,所以es 也是符合带搜寻字串。另外,因为* 为重复『前一个RE 字符』的符号,因此,在 * 之前必须要紧接著一个RE 字符喔!例如任意字节则为『.*』! grep -n 'ess*' regular_express.txt |
[list] | 意义:字节集合的RE 字符,里面列出想要撷取的字节! 范例:搜寻含有(gl) 或(gd) 的那一行,需要特别留意的是,在[] 当中『谨代表一个待搜寻的字节』,例如『 a[afl]y 』代表搜寻的字串可以是aay, afy, aly 即[afl] 代表a 或f 或l 的意思! grep -n 'g[ld]' regular_express.txt |
[n1-n2] | 意义:字节集合的RE字符,里面列出想要撷取的字节范围! 范例:搜寻含有任意数字的那一行!需特别留意,在字节集合[] 中的减号- 是有特殊意义的,他代表两个字节之间的所有连续字节!但这个连续与否与ASCII 编码有关,因此,你的编码需要配置正确(在bash 当中,需要确定LANG 与LANGUAGE 的变量是否正确!)例如所有大写字节则为[A-Z] grep -n '[A-Z]' regular_express.txt |
[^list] | 意义:字节集合的RE 字符,里面列出不要的字串或范围! 范例:搜寻的字串可以是(oog) (ood) 但不能是(oot) ,那个^ 在[] 内时,代表的意义是『反向选择』的意思。例如,我不要大写字节,则为 [^A-Z]。但是,需要特别注意的是,如果以grep -n [^A-Z] regular_express.txt来搜寻,却发现该文件内的所有行都被列出,为什么?因为这个[^A-Z] 是『非大写字节』的意思,因为每一行均有非大写字节,例如第一行的 "OpenSource" 就有p,e,n,o.... 等等的小写字 grep -n 'oo[^t]' regular_express.txt |
\{n,m\} | 意义:连续n 到m 个的『前一个RE 字符』 意义:若为\{n\} 则是连续n 个的前一个RE 字符, 意义:若是\{n,\} 则是连续n 个以上的前一个RE 字符!范例:在 g 与g 之间有2 个到3 个的o 存在的字串,亦即(goog)(gooog) grep -n 'go\{2,3\}g' regular_express.txt |
文件的格式化与相关处理:
格式化列印:printf
awk:好用的数据处理工具
件比对工具:diff,cmp,patch(补丁)
文件列印准备:pr
相关文章推荐
- CentOS 6.7系统安装详解
- pjsip编译步骤,centos环境支持视频通话
- linux下tmpfs文件系统简介
- Linux常用命令大全
- Linux svn一次增加多个文件并批量上传
- linux mysql
- 其他linux
- Linux 基础知识
- 在Linux 6上使用UDEV解决RAC ASM存储设备名问题
- Linux系统启动过程
- Linux下使用fstatfs/statfs查询系统相关信息
- Linux文件系统索引节点inode详解
- Linux sed命令删除指定行
- centos常用命令
- Linux sed命令在指定行前后添加内容
- Makefile中eval函数用法
- arm-linux-objdump 的使用
- linux 破解版confluence安装
- Centos6.5 + Hadoop2.2.0 + Mahout安装(Maven & 发布版安装)
- Linux基础命令简介