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. image和字节流之间的相互转换

    //将图片转化为长二进制 public Byte[] SetImgToByte(string imgPath) { FileStream file = new FileStream(imgPath, ...

  2. apache配置常用模块

    需要加载的模块列表 LoadModule php5_module modules/libphp5.so LoadModule actions_module modules/mod_actions.so ...

  3. JAVA if条件语句,switch多分支结构,与逻辑运算符

    一.if条件语句 示例: import java.util.Scanner; public class Test{ public static void main(String[] args){ Sc ...

  4. Axis2的下载和安装

    Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持S ...

  5. java获取任意日期

    现有两个办法 1:Date as = new Date(new Date().getTime()-24*60*60*1000);  SimpleDateFormat matter1 = new Sim ...

  6. DIY--主板跳线接法

    如下图:

  7. 问答精华-IntelliJ IDEA快捷键大全

    这篇文章介绍了idea的默认快捷键http://www.jikexueyuan.com/blog/229.html 另外:老师将快捷键设置为eclipse的了,你需要在preference里面找到ke ...

  8. crm 4 注释与上传附件权限

    文档注释权限及上传附件是与实体的”追加到”权限有关. 文档注释权限及上传附件是与核心记录中”注释”的”追加”权限有关. 追加及追加到的权限,我的理解是与本实体有关联的实体的权限,比如你引用了其它表的字 ...

  9. Linux安装Oracle报Checking operating system version must be redhat-3, SuSE-9, redhat-4

    解决办法:vi /xx/database/install/oraparam.ini 找到[Certified Versions] Linux=redhat-3,SuSe-9,redhat-4,后面加上 ...

  10. Node.js上传文件

    var formidable = require('formidable'); var util = require('util'); exports.upload = function(req,re ...