版权声明:本文为博主原创文章,转载请注明本文链接。文章内容如有错误望能指正,以免误导更多人。 https://blog.youkuaiyun.com/feixiangqiao/article/details/88667990
1、grep用法
特殊字符串配置
原始数据
[root@python-test1 ~]# cat 1.txt
1932840184019
aasdsfsdgfg
SADAFASFASFAS
aaa
dfsfds
asdasd2e21321
13112134SASDAsdfsf
,,bbb./.,/aaaaa
.././.111..dsf
./,.,.2222.][['
DDDdsfsfs...111
- [:alnum:] 字母和数字
[root@python-test1 ~]# grep -E "[[:alnum:]]" 1.txt
- [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[root@python-test1 ~]# grep -E "[[:alpha:]]" 1.txt
- [:lower:] 小写字母
[root@python-test1 ~]# grep -E "[[:lower:]]" 1.txt
- [:upper:] 大写字母
[root@python-test1 ~]# grep -E "[[:upper:]]" 1.txt
- [:blank:] 空白字符(空格和制表符)
[root@python-test1 ~]# grep -E "[[:blank:]]" 1.txt
注意:在aaa字段前面的是空格,在dfsfds字段前面是制表符(tab键)
- [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[root@python-test1 ~]# grep -E "[[:space:]]" 1.txt
注意:在aaa字段前面的是空格,在dfsfds字段前面是制表符(tab键)
- [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[root@python-test1 ~]# grep -E "[[:cntrl:]]" 1.txt
在dfsfds字段前面是制表符(tab键)
- [:digit:] 十进制数字
[root@python-test1 ~]# grep -E "[[:digit:]]" 1.txt
- [:xdigit:]十六进制数字
[root@python-test1 ~]# grep -E "[[:xdigit:]]" 1.txt
- [:graph:] 可打印的非空白字符
[root@python-test1 ~]# grep -E "[[:graph:]]" 1.txt
- [:print:] 可打印字符
[root@python-test1 ~]# grep -E "[[:print:]]" 1.txt
- [:punct:] 标点符号
[root@python-test1 ~]# grep -E "[[:punct:]]" 1.txt
2、定制vim的工作特性
配置文件:永久有效
- 全局:/etc/vimrc
- 个人:~/.vimrc
扩展模式:当前vim进程有效
- 行号
显示:set number, 简写为set nu
取消显示:set nonumber, 简写为set nonu - 忽略字符的大小写
启用:set ic
不忽略:set noic - 自动缩进
启用:set ai
禁用:set noai - 复制保留格式
启用: set paste
禁用: set nopaste - 高亮搜索
启用:set hlsearch
禁用:set nohlsearch - 语法高亮
启用:syntax on
禁用:syntax off - 显示Tab和换行符 ^I 和$显示
启用:set list
禁用:set nolist - 文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
简写: set ff=dos|unix - 设置文本宽度
启用: set textwidth=65 (vim only)
禁用: set wrapmargin=15 - 设置光标所在行的标识线
启用:set cursorline,简写cul
禁用:set no cursorline
3、sed命令详解
用法:
sed [option]... 'script' inputfile...
常用选项:
-n:不输出模式空间内容到屏幕,即不自动打印
-e: 多点编辑
-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
-r: 支持使用扩展正则表达式
-i.bak: 备份文件并原处编辑
script:
‘地址命令’
地址定界:
- 不给地址:对全文进行处理
- 单地址:
#: 指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行 - 地址范围:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/ - ~:步进
1~2 奇数行
2~2 偶数行 - 编辑命令:
d: 删除模式空间匹配的行,并立即启用下一轮循环
p:打印当前模式空间内容,追加到默认输出之后
a []text:在指定行后面追加文本 - 支持使用\n实现多行追加
i []text:在行前面插入文本
c []text:替换行为单行或多行文本
w /path/somefile: 保存模式匹配的行至指定文件
r /path/somefile:读取指定文件的文本至模式空间中 - 匹配到的行后
=: 为模式空间中的行打印行号
!:模式空间中匹配行取反处理
s///:查找替换,支持使用其它分隔符,s@@@,s### - 替换标记:
g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
sed示例
sed ‘2p’ /etc/passwd
sed –n ‘2p’ /etc/passwd
sed –n ‘1,4p’ /etc/passwd
sed –n ‘/root/p’ /etc/passwd
sed –n ‘2,/root/p’ /etc/passwd 从2行开始
sed -n ‘/^$/=’ file 显示空行行号
sed –n –e ‘/^$/p’ –e ‘/^$/=’ file
sed ‘/root/a\superman’ /etc/passwd行后
sed ‘/root/i\superman’ /etc/passwd 行前
sed ‘/root/c\superman’ /etc/passwd 代替行
sed ‘/^$/d’ file
sed ‘1,10d’ file
nl /etc/passwd | sed ‘2,5d’
nl /etc/passwd | sed ‘2a tea’
sed 's/test/mytest/g' example
sed –n ‘s/root/&superman/p’ /etc/passwd 单词后
sed –n ‘s/root/superman&/p’ /etc/passwd 单词前
sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets
sed –i.bak ‘s/dog/cat/g’ pets