通过awk 和 sed 将多余的列剔除

名词注释:

awk
-F 指定分隔符
OFS 指定输出分隔符 sed
sed "s/|/test/2" a.log 将第二个 | 线替换为 test sed "s/[^ ]\+[[:space:]]/test/2" a.log 依照空格为分割

注:需求将现有的 40 列,减少到 38 列;将第二列于第三列数据删除;

1.查看文件按照 "|" 切分可以分为多少列;

[root@nq awk]# awk -F "|" '{print NF}' a.log |head -1
40

2.源文件:

[root@baolin awk]# cat a.log
2017-12-13 02:38:35|null|b9920e600ed6882e8bb04a|117.77.19.10|10|b992x0xcx9x9xdxbxex6x0x||es|US|||02:00:00:00:00:00|6.2.1|1.6.06|Android|LG-M13|MXB48T||1||19|0|0|||||0|0|1|0|2|2|0|0|16|6||20171213023824|1
2017-12-13 02:38:35|null|b9920e600ed6882e8bb04a|117.77.19.10|10|b9x9x2x0xcx9x9xdxbxex6a||es|US|||02:00:00:00:00:00|6.2.1|1.6.06|Android|LG-M13|MXB48T||1||19|0|0||coins5|||0|0|1|0|2|2|0|0|4|6||2017121302833|1
2017-12-13 02:38:35|null|b9920e600ed6882e8bb04a|117.77.19.10|10|b992x0xcx9x9xdxbxex6x0x||es|US|||02:00:00:00:00:00|6.2.1|1.6.06|Android|LG-M13|MXB48T||1||19|0|0||coins5|1|U|0|0|1|0|2|2|0|0|6|6||271213023833|1
2017-12-13 02:38:41|null|44e90866234d109954082a|117.242.13.4|10|4x4xex9x0x8x6x6x2x3x6xa||en|US|||02:00:00:00:00:00|7.1|1.6.06|Android|LG-M57|NRD90U|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|14|||20171213023636|1
2017-12-13 02:38:41|null|44e86623614bddd1965502|117.242.13.4|10|4x4xex9x0x8x6x6x2x3x6xa||en|US|||02:00:00:00:00:00|7.1|1.6.06|Android|LG-M57|NRD90U|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|13|||20171213023638|1
2017-12-13 02:38:41|null|44986264bd19715654082a|117.242.13.4|10|44xex9x0x8x6x6x2x3xx6xx||en|US|||02:00:00:00:00:00|7.1|1.6.06|Android|LG-M57|NRD90U|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|9|||20171213023647|1
2017-12-13 02:38:41|null|44e06264d096a15654082a|117.242.13.4|10|44e963a614bddd97654082a||en|US|||02:00:00:00:00:00|7.1|1.6.06|Android|LG-M57|NRD90U||5||10|0|10|||||1|1|0|0|1|0|2|0|1|||20171213023834|1
2017-12-13 02:38:43|null|6f4054396032da1454eb27|198.17.155.26|10|67f0450d54396032154eb27||en|US|||02:00:00:00:00:00|7.0.1|1.6.06|Android|Z65|Z965V1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|14|||20171213022943|1
2017-12-13 02:38:43|null|705dc7a57c372d1454eb27|198.17.155.26|10|6f40543960c372d1454eb27||en|US|||02:00:00:00:00:00|7.0.1|1.6.06|Android|Z65|Z965V1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|13|||20171213022947|1
2017-12-13 02:38:43|null|67f4054396032d1454eb27|198.17.155.26|10|6f40543960c372d1454eb27||en|US|||02:00:00:00:00:00|7.0.1|1.6.06|Android|Z65|Z965V1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|9|||20171213022952|1

3.依照"|"为分割,将第二列于第三列数据删除,包括 "|"

[root@nq awk]# awk -F '|' 'OFS="|"{$2="";$3="";print}' a.log |sed "s/|//2" |sed "s/|//2"
2017-12-13 02:38:35|117.77.19.10|10|b992x0xcx9x9xdxbxex6x0x||es|US|||02:00:00:00:00:00|6.2.1|1.6.06|Android|LG-M13|MXB48T||1||19|0|0|||||0|0|1|0|2|2|0|0|16|6||20171213023824|1
2017-12-13 02:38:35|117.77.19.10|10|b9x9x2x0xcx9x9xdxbxex6a||es|US|||02:00:00:00:00:00|6.2.1|1.6.06|Android|LG-M13|MXB48T||1||19|0|0||coins5|||0|0|1|0|2|2|0|0|4|6||2017121302833|1
2017-12-13 02:38:35|117.77.19.10|10|b992x0xcx9x9xdxbxex6x0x||es|US|||02:00:00:00:00:00|6.2.1|1.6.06|Android|LG-M13|MXB48T||1||19|0|0||coins5|1|U|0|0|1|0|2|2|0|0|6|6||271213023833|1
2017-12-13 02:38:41|117.242.13.4|10|4x4xex9x0x8x6x6x2x3x6xa||en|US|||02:00:00:00:00:00|7.1|1.6.06|Android|LG-M57|NRD90U|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|14|||20171213023636|1
2017-12-13 02:38:41|117.242.13.4|10|4x4xex9x0x8x6x6x2x3x6xa||en|US|||02:00:00:00:00:00|7.1|1.6.06|Android|LG-M57|NRD90U|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|13|||20171213023638|1
2017-12-13 02:38:41|117.242.13.4|10|44xex9x0x8x6x6x2x3xx6xx||en|US|||02:00:00:00:00:00|7.1|1.6.06|Android|LG-M57|NRD90U|11|5|0|10|0|10|||||1|1|0|0|2|0|2|0|9|||20171213023647|1
2017-12-13 02:38:41|117.242.13.4|10|44e963a614bddd97654082a||en|US|||02:00:00:00:00:00|7.1|1.6.06|Android|LG-M57|NRD90U||5||10|0|10|||||1|1|0|0|1|0|2|0|1|||20171213023834|1
2017-12-13 02:38:43|198.17.155.26|10|67f0450d54396032154eb27||en|US|||02:00:00:00:00:00|7.0.1|1.6.06|Android|Z65|Z965V1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|14|||20171213022943|1
2017-12-13 02:38:43|198.17.155.26|10|6f40543960c372d1454eb27||en|US|||02:00:00:00:00:00|7.0.1|1.6.06|Android|Z65|Z965V1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|13|||20171213022947|1
2017-12-13 02:38:43|198.17.155.26|10|6f40543960c372d1454eb27||en|US|||02:00:00:00:00:00|7.0.1|1.6.06|Android|Z65|Z965V1.1.11|10|5|0|9|0|0|||||0|1|0|0|2|0|1|0|9|||20171213022952|1

通过awk 和 sed 将多余的列剔除的更多相关文章

  1. 【sed】增加一列【shell文本处理】

    有些简单的文本处理不需要写程序,利用awk和sed就可以很好的完成. 今天记录一下在已有文件中增加一列的方法 sed -i "s/^/Chr${i}\t&/g" file ...

  2. linux中cut、printf、awk、sed命令

    cut.printf.awk.sed在linux中都是用来处理文本的命令,接下来一个一个看. 一.cut命令 cut [选项] 文件名 选项: 主要使用一下两个参数,若是只使用 -f 则默认的分割符为 ...

  3. awk、sed处理文件的简单例子

    awk.sed对处理日志文件和写shell脚本时非常有益.这个东西,如果不经常操作,真心过一段时间就忘差不多..要掌握熟练,就要多练习,这没什么可说的. awk '条件{命令}' filename 假 ...

  4. awk和sed (十二)

    [教程主题]:4.awk和sed [主要内容] [1]awk AWK是贝尔实验室1977年搞出来的文本出现神器.之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberg ...

  5. AWK与SED命令

    linux系统比较常用的AWK与SED命令,这两个命令主要是格式化文本文件信息.接下来将详细介绍这两个命令的基本用法以及可以实现的功能. 一.AWK命令 AWK语言的基本功能是在文件或者字符串中基于指 ...

  6. awk、sed、grep更适合的方向

    awk.sed.grep更适合的方向: grep 更适合单纯的查找或匹配文本 sed 更适合编辑匹配到的文本 awk 更适合格式化文本,对文本进行较复杂格式处理 关于awk内建变量个人见解,简单易懂 ...

  7. 处理海量数据的grep、cut、awk、sed 命令

    grep.cut.awk.sed 常常应用在查找日志.数据.输出结果等等,并对我们想要的数据进行提取. 通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取 处理海量数据之grep命令 ...

  8. linux 三剑客(awk,sed,grep)

    1.awk 在某些场景下,我们需要过滤方式希望是列来匹配,而不是sed的行来匹配,而且awk还可以嵌套for等循环去使用,拓展性强,当然awk也是最难的. awk的常用命令选项: -F fs   fs ...

  9. Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本

    source source /root/.bashrc #让修改后的配置文件在不重启系统的情况下生效.source等同于. 环境变量目录 /etc/profile /etc/profile.d/*.s ...

随机推荐

  1. Nginx 测试环境配置,留作笔记使用

    Nginx 测试环境配置,留做笔记 以下全是配置文件的配置,如果有疑问还请移步Nginx官网参考官方文档. 环境: [root@CentOS6-M01 conf]# cat /etc/redhat-r ...

  2. 自学MVC看这里——全网最全ASP.NET MVC 教程汇总(转)

    自学MVC看这里——全网最全ASP.NET MVC 教程汇总   MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要 ...

  3. linux 常用的中文手册

    http://linuxtools-rst.readthedocs.io/zh_CN/latest/base/index.html 总结的非常好!包括基础.进阶以及各种常用工具.

  4. ansible笔记(12):handlers的用法

    ansible笔记():handlers的用法 这篇文章会介绍playbook中handlers的用法. 在开始介绍之前,我们先来描述一个工作场景: 当我们修改了某些程序的配置文件以后,有可能需要重启 ...

  5. 虚拟机静态ip设置

    1.安装之后,用ifconfig命令发现没有ip信息,如下图,发现没有ip信息(好坑). 网上找了各种资料,最后才发现实自己的网卡没有启动,虽然使用service restart network,但是 ...

  6. Centos 6 安装FreeSWITCH

    为了安装FreeSWITCH ,我选择的Linux是CentOS,目前最新的Centos版本是6.具体安装CentOS的是步骤详见网上的其它资料,本节的主要目的是为了记录FreeSWITCH的安装过程 ...

  7. PHP程序守护进程化

    一般Server程序都是运行在系统后台,这与普通的交互式命令行程序有很大的区别.glibc里有一个函数daemon.调用此函数,就可使当前进程脱离终端变成一个守护进程,具体内容参见man daemon ...

  8. java操作redis之按照关键字删除缓存数据

    思路: 1.链接redis数据库,连接成功2.js.del(key),按照指定的key进行删除,封装删除方法3.js.keys("*"),获取所有键keys的集合,对set集合进行 ...

  9. [PHP]常量的一些特性

    1. define()函数如果定义了两个名称一模一样的常量,那么它将不会抛出错误,并且只有第一次的定义是生效的,再次定义并不会覆盖先前的值: define('ABC', 0); define('ABC ...

  10. [PHP]session的一些要点

    一.session_start([array $options=array()]) 1.只能在输出http头前启动此函数,因为如果需要改写sessid的键和值,需要在http报文头发出前就开始定义了: ...