加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

搞定 Linux Shell 文本处理工具,看完这篇集锦就够了

发布时间:2019-10-16 11:34:34 所属栏目:建站 来源:大CC
导读:副标题#e# Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替。既然是基本功,那就需要掌握,毕竟学习Shell脚本的过程中,还是能了解到很多Linux系统的内容。 Linux脚本大师不是人人都可以达到的,但是用一些简单的Shell实

eg:统计程序行数

  1. find source_dir/ -type f -name "*.cpp" -print0 |xargs -0 wc -l 

 4、sort 排序

字段说明:

-n 按数字进行排序 VS -d 按字典序进行排序

-r 逆序排序

-k N 指定按第N列排序

eg:

  1. sort -nrk 1 data.txtsort -bd data // 忽略像空格之类的前导空白字符 

 5、uniq 消除重复行

消除重复行

  1. sort unsort.txt | uniq 

统计各行在文件中出现的次数

  1. sort unsort.txt | uniq -c 

找出重复行

  1. sort unsort.txt | uniq -d 

可指定每行中需要比较的重复内容:-s 开始位置 -w 比较字符数

 6、用tr进行转换

通用用法

  1. echo 12345 | tr '0-9' '9876543210' //加解密转换,替换对应字符  cat text| tr '   ' ' '  //制表符转空格 

tr删除字符

  1. cat file | tr -d '0-9' // 删除所有数字 

-c 求补集

  1. cat file | tr -c '0-9' //获取文件中所有数字  cat file | tr -d -c '0-9 

'  //删除非数字数据

tr压缩字符

tr -s 压缩文本中出现的重复字符;最常用于压缩多余的空格

  1. cat file | tr -s ' ' 

字符类

tr中可用各种字符类:

alnum:字母和数字

alpha:字母

digit:数字

space:空白字符

lower:小写

upper:大写

cntrl:控制(非可打印)字符

print:可打印字符

使用方法:tr [:class:] [:class:]

  1. eg: tr '[:lower:]' '[:upper:]' 

 7、cut 按列切分文本

截取文件的第2列和第4列:

  1. cut -f2,4 filename 

去文件除第3列的所有列:

  1. cut -f3 --complement filename 

-d 指定定界符:

  1. cat -f2 -d";" filename 

cut 取的范围

N- 第N个字段到结尾

-M 第1个字段为M

N-M N到M个字段

cut 取的单位

-b 以字节为单位

-c 以字符为单位

-f 以字段为单位(使用定界符)

eg:

  1. cut -c1-5 file //打印第一到5个字符  cut -c-2 file  //打印前2个字符 

 8、paste 按列拼接文本

将两个文本按列拼接到一起;

  1. cat file112cat file2colinbookpaste file1 file21 colin2 book 

默认的定界符是制表符,可以用-d指明定界符

paste file1 file2 -d ","

1,colin

2,book

 9、wc 统计行和字符的工具

wc -l file // 统计行数

wc -w file // 统计单词数

wc -c file // 统计字符数

 10、sed 文本替换利器

首处替换

  1. seg 's/text/replace_text/' file   //替换每一行的第一处匹配的text 

全局替换

  1. seg 's/text/replace_text/g' file 

默认替换后,输出替换后的内容,如果需要直接替换原文件,使用-i:

  1. seg -i 's/text/repalce_text/g' file 

移除空白行:

  1. sed '/^$/d' file 

变量转换

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!