linux 文本处理

     版权声明:本文为博主原创文章,转载请注明本文链接。文章内容如有错误望能指正,以免误导更多人。 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

alnum

  • [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[root@python-test1 ~]# grep -E "[[:alpha:]]" 1.txt

alpha

  • [:lower:] 小写字母
[root@python-test1 ~]# grep -E "[[:lower:]]" 1.txt

lower

  • [:upper:] 大写字母
[root@python-test1 ~]# grep -E "[[:upper:]]" 1.txt

upper

  • [:blank:] 空白字符(空格和制表符)
[root@python-test1 ~]# grep -E "[[:blank:]]" 1.txt

blank

注意:在aaa字段前面的是空格,在dfsfds字段前面是制表符(tab键)

  • [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
[root@python-test1 ~]# grep -E "[[:space:]]" 1.txt

space

注意:在aaa字段前面的是空格,在dfsfds字段前面是制表符(tab键)

  • [:cntrl:] 不可打印的控制字符(退格、删除、警铃…)
[root@python-test1 ~]# grep -E "[[:cntrl:]]" 1.txt

cntrl

在dfsfds字段前面是制表符(tab键)

  • [:digit:] 十进制数字
[root@python-test1 ~]# grep -E "[[:digit:]]" 1.txt

digit

  • [:xdigit:]十六进制数字
[root@python-test1 ~]# grep -E "[[:xdigit:]]" 1.txt

xdigit

  • [:graph:] 可打印的非空白字符
[root@python-test1 ~]# grep -E "[[:graph:]]" 1.txt

graph

  • [:print:] 可打印字符
[root@python-test1 ~]# grep -E "[[:print:]]" 1.txt

print

  • [:punct:] 标点符号
[root@python-test1 ~]# grep -E "[[:punct:]]" 1.txt

punct

2、定制vim的工作特性

配置文件:永久有效

  • 全局:/etc/vimrc
  • 个人:~/.vimrc

扩展模式:当前vim进程有效

  1. 行号
        显示:set number, 简写为set nu
        取消显示:set nonumber, 简写为set nonu
  2. 忽略字符的大小写
        启用:set ic
        不忽略:set noic
  3. 自动缩进
        启用:set ai
        禁用:set noai
  4. 复制保留格式
        启用: set paste
        禁用: set nopaste
  5. 高亮搜索
        启用:set hlsearch
        禁用:set nohlsearch
  6. 语法高亮
        启用:syntax on
        禁用:syntax off
  7. 显示Tab和换行符 ^I 和$显示
        启用:set list
        禁用:set nolist
  8. 文件格式
        启用windows格式:set fileformat=dos
        启用unix格式:set fileformat=unix
        简写: set ff=dos|unix
  9. 设置文本宽度
        启用: set textwidth=65 (vim only)
        禁用: set wrapmargin=15
  10. 设置光标所在行的标识线
        启用:set cursorline,简写cul
        禁用:set no cursorline

3、sed命令详解

用法:

sed [option]... 'script' inputfile...

常用选项:
    -n:不输出模式空间内容到屏幕,即不自动打印
    -e: 多点编辑
    -f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
    -r: 支持使用扩展正则表达式
    -i.bak: 备份文件并原处编辑

script:
    ‘地址命令’
地址定界:

  1. 不给地址:对全文进行处理
  2. 单地址:
        #: 指定的行,$:最后一行
        /pattern/:被此处模式所能够匹配到的每一行
  3. 地址范围:
        #,#
        #,+#
        /pat1/,/pat2/
        #,/pat1/
  4. ~:步进
        1~2 奇数行
        2~2 偶数行
  5. 编辑命令:
        d: 删除模式空间匹配的行,并立即启用下一轮循环
        p:打印当前模式空间内容,追加到默认输出之后
        a []text:在指定行后面追加文本
  6. 支持使用\n实现多行追加
        i []text:在行前面插入文本
        c []text:替换行为单行或多行文本
        w /path/somefile: 保存模式匹配的行至指定文件
        r /path/somefile:读取指定文件的文本至模式空间中
  7. 匹配到的行后
        =: 为模式空间中的行打印行号
        !:模式空间中匹配行取反处理
        s///:查找替换,支持使用其它分隔符,s@@@,s###
  8. 替换标记:
        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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值