通过awk 和 sed 将多余的列剔除
通过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 将多余的列剔除的更多相关文章
- 【sed】增加一列【shell文本处理】
有些简单的文本处理不需要写程序,利用awk和sed就可以很好的完成. 今天记录一下在已有文件中增加一列的方法 sed -i "s/^/Chr${i}\t&/g" file ...
- linux中cut、printf、awk、sed命令
cut.printf.awk.sed在linux中都是用来处理文本的命令,接下来一个一个看. 一.cut命令 cut [选项] 文件名 选项: 主要使用一下两个参数,若是只使用 -f 则默认的分割符为 ...
- awk、sed处理文件的简单例子
awk.sed对处理日志文件和写shell脚本时非常有益.这个东西,如果不经常操作,真心过一段时间就忘差不多..要掌握熟练,就要多练习,这没什么可说的. awk '条件{命令}' filename 假 ...
- awk和sed (十二)
[教程主题]:4.awk和sed [主要内容] [1]awk AWK是贝尔实验室1977年搞出来的文本出现神器.之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberg ...
- AWK与SED命令
linux系统比较常用的AWK与SED命令,这两个命令主要是格式化文本文件信息.接下来将详细介绍这两个命令的基本用法以及可以实现的功能. 一.AWK命令 AWK语言的基本功能是在文件或者字符串中基于指 ...
- awk、sed、grep更适合的方向
awk.sed.grep更适合的方向: grep 更适合单纯的查找或匹配文本 sed 更适合编辑匹配到的文本 awk 更适合格式化文本,对文本进行较复杂格式处理 关于awk内建变量个人见解,简单易懂 ...
- 处理海量数据的grep、cut、awk、sed 命令
grep.cut.awk.sed 常常应用在查找日志.数据.输出结果等等,并对我们想要的数据进行提取. 通常grep,sed命令是对行进行提取,cut跟awk是对列进行提取 处理海量数据之grep命令 ...
- linux 三剑客(awk,sed,grep)
1.awk 在某些场景下,我们需要过滤方式希望是列来匹配,而不是sed的行来匹配,而且awk还可以嵌套for等循环去使用,拓展性强,当然awk也是最难的. awk的常用命令选项: -F fs fs ...
- Linux学习--第十一天--source、环境变量目录、欢迎信息、正则、cut、awk、sed、sort、判断表达式、if、for、case、一些脚本
source source /root/.bashrc #让修改后的配置文件在不重启系统的情况下生效.source等同于. 环境变量目录 /etc/profile /etc/profile.d/*.s ...
随机推荐
- kali linux 安装virtualbox报错(rc=-1908)
解决步骤: apt-get install dkms # 如何安装了dkms就跳过这步 apt-get install linux-headers-`uname -r` # 这个符号是TAB上方的符号 ...
- 椭圆曲线密码学ECC
椭圆曲线密码学(Elliptic curve cryptography),简称ECC,是一种建立公开密钥加密的算法,也就是非对称加密.类似的还有RSA,ElGamal算法等.ECC被公认为在给定密 ...
- C#实现邮件发送的功能
Ø 发送邮件所用的核心知识点 微软封装好的MailMessage类:主要处理发送邮件的内容(如:收发人地址.标题.主体.图片等等) 微软封装好的SmtpClient类:主要处理用smtp方式发送此邮 ...
- vc++基础班[22]---文件的基本操作2
MFC 中的 CFile 及其派生类中没有提供直接进行文件的复制操作,因而要借助于SDK API: SDK中的文件相关函数常用的有CopyFile().CreateDirectory().Dele ...
- 用WMI监控IIS
参考网站:http://blog.chinaunix.net/uid-7910284-id-5774420.html 参考官方文档:https://docs.microsoft.com/en-us/p ...
- 题解-bzoj4320 Homework
Problem bzoj4320 Solution 前置技能:分块+线段树+卡常+一点小小的数学知识 考试时A的 这种题无论怎么处理总有瓶颈,套路分块,设\(k\)以下的插入时直接暴力预处理,查询时直 ...
- 【转】drop、truncate和delete的区别
(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删 ...
- rman 示例
背景 rman,听这名字,好像有点真的男人意思.这玩意其实也简单,只是老忘,作为一个oracle dba爱好者,怎么少了rman呢,这个好像是oracle体系的最后一环,把它掌握了,就完成oracle ...
- mysql的group by查询
下面是多种写法,针对使用group by后得到最新记录的测试及结果: 说明:我在测试的时候,因为我的表数据在增加,得到最新的数据可能不同 -- 1.得到每个分组中id最小的那条记录 select * ...
- MVC、MVP、MVVM模式
MVC,MVP和MVVM都是常见的软件架构设计模式(Architectural Pattern),它通过分离关注点来改进代码的组织方式.不同于设计模式(Design Pattern),只是为了解决一类 ...