Pyp 替代sed,awk的文本处理工具
Linux上文本处理工具虽不少,像cut,tr,join,split,paste,sort,uniq,sed,awk这些经典工具让人眼花缭乱,而且都太老了,使用方法都不太人性化,尤其awk,语法简直反人类;所以perl,python,ruby等脚本语言相当热火,我倾向用python,但处理一些简单任务python写的还是比较麻烦,无法一行命令解决,直到我发现了它-Pyp!
Pyp(Pyed piper)–一个python写的类似sed,awk的文本处理工具,简单优雅而强大~
安装:
ubuntu官方源就有:
1 |
aptitude install pyp
|
基本使用:
echo ‘string’ | pyp “命令”
一些例子:
pyp的命令用双引号””包围起来,双引号里字符串用单引号’包围
变量p:将每行作为一个字符串,p就是这这个字符串,python的字符串方法都可以用,譬如字符替换:
1 |
cat test .txt |pyp "p.replace('123','abc')"
|
变量pp:将整个文本当做一个列表,每行是个列表元素,列表方法都可以使用,譬如行排序:
1 |
cat test .txt |pyp "pp.sort()"
|
管道:
pyp的命令可以内嵌管道,此时管道后p或pp代表前一个命令的输出,类似unix下的标准管道:
1 |
echo 'FOO IS AN ' | pyp p.replace( 'FOO' , 'THIS' )|p+ 'EXAMPLE' "
|
这个例子通过管道将replace后的字符串再当做p,增加了额外字符串’EXAMPLE’
分割:
1 |
echo /this/is/a/splitting/example | pyp "p.split('/')"
|
将产生一个有序号的输出
算数运算:
算数运算要用()包裹起来
echo 'qwe665' | pyp "(int(p[3:]) + 1)"
同时处理两个文本:
使用“–text_file”标识可以操处理第二个文本,类似于”p””pp”,第二个文本行和整体用变量”fp””fpp”替代:
cat a.txt | pyp "p + fp" --text_file b.txt
正则表达式:
pyp也支持正则,p.re(正则表达式)就行
cat a.txt | pyp "p.replace(p.re('^#.*'),'')"
这句就删掉所有注释行
特殊变量:
p
pp
original //original line by line input to pyp
o //same as original
sp //second steam line input, just like p, but from all non-flag arguments AFTER pyp
quote //a literal ” (double quotes can’t be used in a pyp expression)
paran //a literal ‘
dollar //a literal $
n //line counter (1st line is 0, 2nd line is 1,…use the form “(n+3)” to modify this value.
nk //n + 1000
date //date and time. Returns the current datetime.datetime.now() object.
pwd //present working directory
history //history array of all previous results: so pyp “a|u|s|i|h[-3]” shows eval of s
h //same as history
letters //abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
digits //0123456789
punctuation //!”#$%&'()*+,-./:;<=>?@[]^_{|}~`
与split和join有关的变量:
s OR slash //p split/joined on “/”
d OR dot //p split/joined on “.”
w OR whitespace //p split on whitespace (on spaces,tabs,etc), joined on spaces
u OR underscore //p split/joined on ‘_’
c OR colon //p split/joined on ‘:’
mm OR comma //p split/joined on ‘,’
m OR minus //p split/joined on ‘-‘
a OR all //p split on [‘ ‘-_=$…] (on “All” metacharacters)
与p有关变量:
p.dir path DIRECTORY
p.file path FILE
p.ext path EXTENSION
行级操作:
pyp “p” //直接打印各行
pyp “p +’FOO'” //每行append字符串
pyp “p +’FOO’| p + o” //append的新字符串再与老字符串做操作
pyp “p.replace(‘FOO’,’GOO’)” //字符串替换
pyp “p.kill(‘GOO’)” //删除特定字符串
string substitution pyp “‘%s FOO %s %s GOO’%(p,p,5)”
pyp “p.split(‘FOO’)” //分割成列表
pyp “slash” //用’/’分割成列表的简写
pyp “slash[0]” //用’/’分割成列表并选取第一列
pyp “s[2:6]” //用’/’分割成列表并选取多列
pyp “s[2:6] | s” //用’/’分割成列表并选取多列再用’/’拼接
echo ‘qwe665′ | pyp “(int(p[3:]) + 1)” //算数操作(要用()包围)
pyp “p.replace(p.re(REGEX),STR)” //正则表达式
pyp “p.letters()” //只输出字符
pyp “p.digits()” //只输出数字
pyp “p.punctuation()” //只输出标点
pyp “p.clean(DELIM)” //处理乱码字符,将其替换为DELIM
文本当做列表操作:
pyp “pp” //输出整个文本
pyp “pp.sort()” //排序
pyp “pp.uniq” //去重
pyp “pp.oneline” //合并所有列表元素到一行字符串,元素间以空格分开
pyp “pp.unlist()” //不知道什么意思
pyp.divide(N) //每N个元素合并一个新列表
pyp “pp.before(‘FOO'[,n])” //输出指定字符串的上面n行,默认为一行
pyp “pp.after(‘FOO'[,n])” //输出指定字符串的下面n行,默认为一行
pyp “pp.matrix(‘FOO'[,n])” //输出指定字符串的上下面各n行,默认为一行
pyp “[x for x in pp]” //遍历列表
pyp “pp.sort() | p” //文本当做列表处理完再转换成文本
pyp “pp.delimit(DELIM)” //自定义分隔符而不是默认的换行符
相关文章
转载于:https://www.cnblogs.com/DjangoBlog/p/5783175.html
Pyp 替代sed,awk的文本处理工具相关推荐
- linux 大文件编辑sed,Linux高级文本处理工具之sed(一)
sed:Stream Editor文本流编辑,sed是一个"非交互式的"面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模 ...
- 【Linux】 字符串和文本处理工具 grep sed awk
Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...
- 2019-8-20 [Linux] 6.Shell的基本操作 查看 改变 列出 阅读开头/结尾 循环查看 阅读工具less 查找文件内容 文本分析工具AWK 文本编辑工具SED文件find 帮助man
文章目录 6.linuxShell的基本操作 6.1 查看目录和文件 6.1.1 显示当前目录:pwd 6.1.2 改变目录:cd 6.1.3 列出目录内容:ls 1) 查看列表信息 以及详细信息 2 ...
- Shell程序设计 | 文本处理工具 :正则表达式、grep、sed、awk
文章目录 正则表达式 grep sed awk 其它常用工具 cut sort uniq tr 常见面试题 第十行 有效电话号码 统计词频 转置文件 要想使用这些流式处理工具,那么就必须得了解正则表达 ...
- Linux正则表达式和文本处理工具(gred、awk、sed)
使用Linux 的 gred.awk.sed 可以方便得处理文本,然而若要灵活使用这三个工具,首先必须理解正则表达式.这里先对正则表达式进行学习,做点记录,之后再练习一下文本处理工具的使用. 正则表达 ...
- shell浅谈之七文本处理工具grep、sed、awk
一.简介 Bash Shell提供了功能强大的文件处理工具:sed(流编辑器stream editor)和awk,都可使用正则表达式进行模式匹配.而grep又有助于理解sed和awk. 二.grep命 ...
- Linux命令:文本处理工具awk详解
awk命令简介: awk是一个强大的文本分析工具,通常,awk是以文件的每一行,为处理单位的.awk每接收文件的一行,然后执行相应的命令,来处理文本. 1.命令格式: awk 'pattern {a ...
- (管道| / 重定向 / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
原文连接:http://www.cnblogs.com/alwayswyy/p/5191137.html 本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下 一. ...
- linux文本分析工具awk解读
awk是一个强大的文本分析工具,相对于grep的查找.sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.awk把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. ...
最新文章
- 如何修改CMD命令行窗口下的默认路径
- String字符串中获取所有匹配结果的索引值
- CMD各段定义与分配方法指引
- [转]# python中init和new的区别
- Eclipse中启动tomcat访问404解决及原因
- 《程序员修炼之道》笔记(五)
- ZStack实践汇 | 高效开发测试打造产品化私有云
- nginx 完全关闭 access_log
- 跟涛哥(张开涛)聊聊技术人的发展
- 图像匹配 一些基本算法
- 理解分布函数(概率论)
- 12月10日周日下午广州Linuxer聚会(4大演讲主题+蜗窝大侠郭健主持)
- IT男把笔记本电脑放膝上会怎样?
- 计算机网络常见笔试面试题(一)
- 计算机组成原理笔记——随机存取存储器
- 高防服务器好,还是游戏盾好?
- 每天一刷20200602
- 【SeedLab】Morris Worm Attack Lab
- 项目实践:基于华为CCE环境下Tomcat的关键性能指标及监控方法
- 求asinx+bcosx的不定积分