码迷,mamicode.com
首页 > 其他好文 > 详细

文本处理工具

时间:2020-07-01 00:12:55      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:过滤   显示行号   写入   pat   运行   txt   ascii   文本处理工具   数据   

1、grep工具
grep是行运滤工具;用于根据关键字进行过滤
# grep [] ‘关键字‘ 文件名
   -i::不区分大小写
  -v:查找不包含指定内容的行,反向选择
  -w:按单词搜索
  -o:打印匹配关键字
  -c:统计匹配的次数
  -n:显示行号
  -r:逐层遍历目录查找
  -A:显示匹配行及及后面多少行
  -B:显示匹配及前面多少行|
  -C:显示匹配行前后多少行
  -l:只列出匹配的文件名
  -L:列出不匹配的文件名
  -e:使用正则匹配
  -E:使用扩展正则匹配
  ^key:以关键开头
  ^$:匹配空行
  --color=auto:可以将找到的关键词部分加上颜色的显示

用颜色显示:全局生效
  vim /etc/bashrc
 在最后小o一下
 alias grep=‘grep --color=auto‘
:wq

重新加一下配置文件
#source /etc/bashrc

# grep --color=auto ‘root‘ passwd
需要写到配置文件:

cp /etc/passwd /root
例# grep ‘root‘ passwd
   # grep -n ‘root‘ passwd
   #  vim passwd
   # 把‘root‘ 修改‘ROOT‘
   # grep -ni ‘root‘ passwd        # -n显示行号,-i是忽略大小写
   # grep ‘^root‘ passwd           #查找root开头的行
   # grep ‘bash$‘ passwd         #查找cbash结尾的行
   # grep -niv ‘root‘ passwd      #-v是取返的意思,不以root显示的行
   # grep -nB 3 ‘^ftp‘ passwd    #查找包含ftp的行及前其3行,B就是before
   # grep -nA 3 ‘^ftp‘ passwd    #查找包启ftp的行及其后3行,A就是after
   # grep -nC 3 ‘ftp‘  passwd    #查找包启ftp的行及其三3行和后3行
   # grep -w ‘hello‘  passwd     #打印包启hello单词的行
   # grep -o ‘hello‘  passwd      #打印关键字hello本身
man grep

2、cut工具
cut是列截取工具,用于列的截取
语法与选项:
# cut 选项  文件名
常见选项:
  -c:以字符为单位进行分割,截取
  -d:  自定义分割符,默认为制表符为\t
  -f:  与-d一起使用,指定截取哪个区域
例:# cat -d: -f1 1.txt        以:冒号分割,截取第1列内容
    # cut -d: -f1,6,7, 1.txt    以:冒号分割,截取1,6,7列内容
    # cut -c4 1.txt               截取文件中每行第4个字符
    # cut -c4-10 1.txt         截取文件中每行的1-4个字符
    # cut -c5- 1.txt              从第5个字符开始截取后面所有字符
    # cut -d: -f1 passwd     截取每行的第一列
    # cut -d: -f1,7 passwd | head       截取每一行第1,7列,并且只显示头10行
    # cut -c10- passwd  
    #cut -c5-10 passwd     截取所有行第5到10列,即5,6,7,8,9,10列
   

head passwd 查看文件passwd头10行
tail   passwd 查看文件passwd最后10行

查看系统运行及别:
# runlevel | cut -c3
# runlevel | cut -d ‘ ‘ -f2
# grep -v ‘^#‘ /etc/inittab | cat -d: -f2

3、sort工具
sort工具用于排序;它将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较,最后将他们安升序输出。
语法和选项:
  -u: 去除重复行(不管你重不重复,都会去除重复的行)
  -r :降序排列,默认是升序
  -o:将排序结果输出到文件中,类似重定向符号>
  -n:以数据排序,默认是按字符排序
  -t:分隔符
  -k:第N列
  -b:忽略前导空格
  -R:随机排序,每次运行的结果均不同
例:
  # sort -n -t: -k3 1.txt
  # head passwd > 1.txt   将passwd的前10行重定向到1.txt
  # sort -n -t: -k3 1.txt
  # sort -nr -t: -k3 1.txt
  # sort -nr -t: -k3 1.txt -o 2.txt
  # sort -u 3.txt      #去除重复的行
4、uniq工具
uniq用于去除 连续的重复行
常用选项:
  -i:忽略大小写
  -c:统计重复行次数
  -d:只显示重复行
例:
  # uniq 2.txt
  # uniq -d 2.txt
  # uniq -dc 2.txt
5、tee工具
tee工具是从标准输入读取并写入到标准输出和文件,即:在屏幕上输出一份,同时写到入文件一份,此工具默认是覆盖之前内容
例:
  echo hello world | tee 11.txt        #在11.txt中会有hello world
  echo 999 | tee 11.txt                  #在11.txt中会覆盖掉hellow world并写入999
  echo 666 | tee -a 11.txt              #此时加了-a时,就是追加在原内容后面,999,666


  #过滤配置文件vsftpd.conf,除去#号开头的,去掉包含空格内容,tee在屏幕上输出并写入vsftpd.conf.bak文件
  grep -v ‘^#‘ vsftpd.conf | grep -v ‘^$‘ | tee vsftpd.conf.bak 

6、diff工具
diff工具用于逐行比较文件的不同
注意:diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配。
语法:
  # diff file1 file2    将文件file1改变后与file2比较,file2为基点,file1是需要改变的
  # diff -c file1 file2  #以上下文格格式显示,***表示第一个文件,---表标第二个文件
 # diff -u file1 file2   #合并格式,---表示第一个文件,+++表示第二个文件  (此方法常用,易懂)
   -表示删除,+表示要增加的内容,没有符号表示不要改变,改file1,使其与file2相同

diff工具用于比较两个目录的不同:
  # diff -q dir1 dir2
打文件打补丁
  #diff -uN file1 file2 > file.patch    #找出不同内容重定向到file.atch文件
  # patch file file.patch                  #将不同的内容,打到file1的文件当中

7、paste工具
paste工具用于合并文件行
  常用选项:
    -d:自定义间隔符,默认是tab
    -s:串行处理,非并行
  例:
    # paste file2 file2         #默认就是空格分隔tab
    # paste -d: file1 file2    #自定义以:号为分隔符
    # paste -s file1 file2     #两个文件是换行处理
8、tr工具
tr用于字符串转换,替换和删除;主要用于删除文件中控制符或进行字符转换
语法和选项:
 语法:
  1:命令的执行结果交给tr处理,其中string1用于查询,string2用于转换处理
    # commands | tr ‘string1‘ ‘string2‘
  2:tr处理的内容来自文件,记住要使用"<"标准输入
   # tr options ‘string1‘ < filename
  选项
    -d:删除字符串1中所有输入字符
    -s:删除所有重复出现 字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串
  常见匹配字符串:
    a-z或[:lower:]     匹配所有小写字母             [a-zA-Z0-9]  
    A-Z或[:upper:]   匹配所有大写字母
    0-9或[:digit:]      匹配所有数字
  例:
    # tr ‘a-z‘ ‘A-Z‘ < 1.txt     #将所有小写替换为大写
    # tr ‘0-9‘ ‘@‘ < 1.txt      #将1.txt文件当中数据替换为@号
    # tr ‘:/‘ ‘#‘ < 1.txt           #将1.txt文件当中的:号和/替换为#,是单个单个替换
    # tr -d ‘:/ 0-9,‘ < 1.txt     # -d是删除文件当中的字符
    # tr -d ‘[:/ 0-9,]‘ < 1.txt   #-d也是删除文件当中的字符
    # tr -s ‘a-z‘ < 1.txt         #压缩所有连续的小写字母,压缩一行一行处理

 

 


   

  

 

    

 

文本处理工具

标签:过滤   显示行号   写入   pat   运行   txt   ascii   文本处理工具   数据   

原文地址:https://www.cnblogs.com/shaues/p/13207396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!