tr,awk,sed

一:tr

1.大小写转换

cat file | tr [a-z] [A-Z] > new_file(大写 --> 小写)
cat file | tr [A-Z] [a-z] > new_file
2.删除空行 
cat file | tr -s "\n" > new_file
 

二:awk:

gsub   全局替换
sub     替换第一次
gensub   指定替换第几次
他们都是用来正则处理文本的
 
awk的sub函数用法:

1.sub函数匹配指定域/记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。

如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。格式如下:
sub (regular expression, substitution string):
sub (regular expression, substitution string, target string)
实例:
$ awk '{ sub(/test/, "mytest"); print }' testfile
$ awk '{ sub(/test/, "mytest", $1); print }' testfile
      第一个例子在整个记录中匹配,替换只发生在第一次匹配发生的时候。
      第二个例子在整个记录的第一个域中进行匹配,替换只发生在第一次匹配发生的时候。
如要在整个文件中进行匹配需要用到gsub

2.gsub函数作用如sub,但它在整个文档中进行匹配。格式如下:

gsub (regular expression, substitution string)
                  gsub (regular expression, substitution string, target string)
实例:
$ awk '{ gsub(/test/, "mytest"); print }' testfile
$ awk '{ gsub(/test/, "mytest", $1); print }' testfile
      第一个例子在整个文档中匹配test,匹配的都被替换成mytest。
      第二个例子在整个文档的第一个域中匹配,所有匹配的都被替换成mytest。

 
sub和gsub返回的都是替换次数
[zhangping10@yf-nsop-dev01.yf01.baidu.com ~]$ echo "a b c 2011-11-22 a:d" | awk '{$2=gsub(/-/,"",$4);print $0}'
a c a:d

3.gensub则更强大,可以指定替换的第几次,函数返回值是替换的结果

[zhangping10@yf-nsop-dev01.yf01.baidu.com ~]$ echo "a b c 2011-11-22 a-d" | awk '{$6=gensub(/-/,"",1,$4);print $0}'
a b c -- a-d -
gensub(/-/,"",1,$4)
/-/:替换源
"":替换目标
1:替换第几次,"g","G"表示全局替换
$4:替换第几个字段 替换目标还可以使用分组
[zhangping10@yf-nsop-dev01.yf01.baidu.com ~]$ echo "duowan duowan-0002-gs2 a" | awk '{$0=gensub(/^.*-([0-9]+)(-.*)$/,"\\2","g",$2);print $0}'
-gs2

替换文本:

cat nj | awk 'BEGIN{FS=";";OFS=";"}{p=gensub(/^.*"([0-9]+)".*$/,"\\1","g",$3); $9=sprintf("healthCheckCmd=\"port:%d\"",p);print $0}'

sed替换

for h in `cat wosms`; do sed -r -i  's/("max_alert_times":[^,]+,)/\1"hi":"g_ns_map_mobile_op",/g' $h;done;

for h in `cat z_oncall`; do  echo $h; sed  -i --r 's/"alert": "([^,]+,)/"alert": "\1"level": 4,/g' $h;done;

删除字符,注意只能处理字符,不能处理字符串

1.删除字符串中g和z 字符

cat abc | tr -d "gz"

2.求出现次数最多的ip

cat a1 | awk 'BEGIN{m=0;t=""}{s[$1]++;if (s[$1]>m) {m=s[$1] t=$1}}END{ print m,t}'

linux 文本处理的更多相关文章

  1. linux文本操作界面 vi面板如何复制一行

    linux文本操作界面 vi面板如何复制一行 1)把光标移动到要复制的行上2)按yy3)把光标移动到要复制的位置4)按p 在vi里如何复制一行中间的几个字符?如果你要从光标处开始复制 4 个字符,则先 ...

  2. Linux文本流

    Linux文本流   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 文本流 文件用于数据的存储,相当于一个个存储数据的房子.我们 ...

  3. 最优秀的5个Linux文本编辑器

    from: http://article.yeeyan.org/view/169956/174836 作为不久前举办的比赛的一部分内容,我从那些选出他们最喜欢的Linux文本编辑器的极客读者们那获得了 ...

  4. linux文本处理常用指令总结

    引子 作为一个偏爱windows的程序员,以前做文本处理的时候总是喜欢在windows下用notepad++等图形化工具处理,比如有时需要把linux服务器上一个文件进行一次全局字符串替换这样简单的操 ...

  5. Linux系列教程(十)——Linux文本编辑器vim

    通过前面几篇博客我们终于结束了Linux常用命令的介绍,Linux常用命令主要包括以下: ①.Linux文件和目录处理命令 ②.Linux链接命令和权限管理命令 ③.Linux文件搜索命令 ④.Lin ...

  6. linux文本处理命令

    linux文本处理命令 1.wc命令 基本介绍 文件的行统计.字符统计.字节统计 基本语法 wc  [OPTION]...  [FILE]... wc  [OPTION]...  --files0-f ...

  7. Linux文本编辑器vim

    目录 1.vim 的工作模式 2.插入命令 3.定位命令 4.删除命令 5.复制和剪切命令 6.替换和取消命令 7.搜索和搜索替换命令 8.保存和退出命令 9.vim 高级操作 10.总结 通过前面几 ...

  8. [文件]Linux文本处理常用命令总结

    转自:https://www.cnblogs.com/sheeva/p/6406285.html 引子 作为一个偏爱windows的程序员,以前做文本处理的时候总是喜欢在windows下用notepa ...

  9. Linux文本编辑器(九)

    [教程主题]:Linux文本编辑器 [1]vi vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任 何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令. 由于对U ...

  10. linux文本分析利器awk

    转 快速理解linux文本分析利器awk 原文链接 杜亦舒 性能与架构 awk是什么 如果工作中需要操作linux比较多,那么awk是非常值得学习的 awk是一个极其强大的文本分析工具,把文件逐行的读 ...

随机推荐

  1. T4批量生成多文件

    http://www.cnblogs.com/zengxiangzhan/p/3250105.html Manager.ttinclude <#@ assembly name="Sys ...

  2. gridView--GridView关于间距的属性值介绍

    android:columnWidth  设置列的宽度.关联的方法为:setColumnWidth(int) android:gravity  设置此组件中的内容在组件中的位置.可选的值有:top.b ...

  3. catalan数及笔试面试里那些相关的问题(转)

    一.catalan数由来和性质 1)由来 catalan数(卡塔兰数)取自组合数学中一个常在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡塔兰数的一般项 ...

  4. Spring中的AOP应用

    AOP被称为面向切面编程,AOP中的几个重要概念是: 1.切面.切面就是要实现的功能.切面通常是在多数方法中会用到的相同功能,如写日志. 2.连接点.连接点就是应用程序执行过程中插入切面的地点.如:方 ...

  5. Jmeter+jenkins接口性能测试平台实践整理(二)

    本篇为Jmeter+jenkins+Ant方式执行性能测试 1.设置JDK,ANT环境变量: 2.build.xml文件: <?xml version="1.0" encod ...

  6. C API 连接MYSQL

    #include <iostream> #include <mysql.h> #include <string> #include <assert.h> ...

  7. [SQL]把同一字段里的多行数据用一行显示

    declare @t table(id int,num int) insert @t , union all , union all , --select * from @t ----查询 decla ...

  8. poj 2299 Ultra-QuickSort :归并排序求逆序数

    点击打开链接 Ultra-QuickSort Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 34676   Accepted ...

  9. DML(Oralce)

    创建视图简化上面              视图就是一张表    一个子查询  虚表 视图通常以v$开头 grant create table,create view to scott;        ...

  10. POJ 3308 Paratroopers(最小割EK(邻接表&矩阵))

    Description It is year 2500 A.D. and there is a terrible war between the forces of the Earth and the ...