加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

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

发布时间:2019-10-19 14:24:07 所属栏目:优化 来源:大CC
导读: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 

变量转换

已匹配的字符串通过标记&来引用.

  1. echo this is en example | seg 's/w+/[&]/g'$>[this]  [is] [en] [example] 

子串匹配标记

第一个匹配的括号内容使用标记  来引用

  1. sed 's/hello([0-9])//' 

双引号求值

sed通常用单引号来引用;也可使用双引号,使用双引号后,双引号会对表达式求值:

  1. sed 's/$var/HLLOE/' 

当使用双引号时,我们可以在sed样式和替换字符串中指定变量;

  1. eg:p=pattenr=replacedecho "line con a patten" | sed "s/$p/$r/g"$>line con a replaced 

其它示例

字符串插入字符:将文本中每行内容(PEKSHA) 转换为 PEK/SHA

sed 's/^.{3}/&//g' file

 11、awk 数据流处理工具

awk脚本结构

  1. awk ' BEGIN{ statements } statements2 END{ statements } ' 

工作方式

1.执行begin中语句块;

2.从文件或stdin中读入一行,然后执行statements2,重复这个过程,直到文件全部被读取完毕;

3.执行end语句块;

print 打印当前行

(编辑:辽源站长网)

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

推荐文章
    热点阅读