对于一个sougou文本文件,解压后大概4G,要求在其基础上切出第一列时间年月日时分秒增加在列中,作为hive的一个索引。先将文件head一下展示格式:

[root@Master date]# head -n  sogou.full.utf8
57375476989eea12893c0c3811607bcf 奇艺高清 http://www.qiyi.com/
66c5bb7774e31d0a22278249b26bc83a 凡人修仙传 http://www.booksky.org/BookDetail.aspx?BookID=1050804&Level=1
b97920521c78de70ac38e3713f524b50 本本联盟 http://www.bblianmeng.com/
6961d0c97fe93701fc9c0d861d096cd9 华南师范大学图书馆 http://lib.scnu.edu.cn/
f2f5a21c764aebde1e8afcc2871e086f 在线代理 http://proxyie.cn/

最开始不知道awk这个命令,就单独切出很多临时文件最后通过paste命令将所有文件拼接起来,小文件测试成功,最后大文件报错说空间不够,跑了一半然后停了

#!/bin/bash

cat $ | cut -b - > year.txt
cat $ | cut -b - > mouth.txt
cat $ | cut -b - > day.txt
cat $ | cut -b - > hour.txt
cat $ | cut -b - > min.txt
cat $ | cut -b - > sec.txt
paste year.txt mouth.txt day.txt hour.txt min.txt sec.txt $ >$
rm -f year.txt
rm -f mouth.txt
rm -f day.txt
rm -f hour.txt
rm -f min.txt
rm -f sec.txt

主要原因是每次读取整个文件但是仅仅只是切出一小部分,同时中间变量通过临时文件的方式保存。这样子不仅仅增加了io时间,也减少了处理效率。

而后使用awk命令,命令是按行读取处理的。Linux博大精深,仅仅一个awk就是一个单独的编程语言,免去了跳转到其他脚本处理的麻烦(R或者Python)

#!/bin/bash

infile=$
outfile=$
awk -F '\t' '{print $0"\t"substr($1,0,4)"\t"substr($1,4,2)"\t"substr($1,6,2)"\t"substr($1,8,2)}' $infile > $outfile

行处理的方式提高了效率,同时让逻辑更加清楚。空余时间还是要加强Linux的命令学习

awk语法详见:{点击这里:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html

SHELL脚本之awk妙用的更多相关文章

  1. shell脚本之awk(一)

     运维必备技能 概述: 1.awk是一种编程语言,用于linux/unix下对文本和数据进行扫描.处理数据来源:标准输入.文件.管道.  2.linux中常用的awk编译器版本有mawk,gawk.R ...

  2. Shell脚本之awk篇

    目录:一.概述二.awk基本语法格式三.awk基本操作四.awk条件及循环语句五.awk函数六.awk演示示例(源自于man手册) 一.概述 1. 产品概述: awk是一种编程语言,用于在linux/ ...

  3. Shell脚本之awk详解

    一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的.awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一 ...

  4. shell脚本,awk实现跳过文件里面的空行。

    1.用awk '{if(!NF ){next}}1' file11 实现对文件里面的空行进行跳过操作,并输出结果. 2. awk '{if(!NF || /^#/){next}}1' file11 实 ...

  5. shell脚本,awk里面的BEGIN讲解。

    解释: BEGIN{}这个特殊的pattern最常用的就是 变量赋值. BEGIN这个pattern就是文件没开始读的时候 执行 awk 'BEGIN{FS=":";OFS=&qu ...

  6. shell脚本,awk利用NF来计算文本显示的行数。

    解释: 1.awk 'NF{a++;print a,$0;next}1' file4 首先判断NF是否存在值,第一行第二行第三行第四行都存在,进行执行后面的输出,输出后碰到next后,就结束了后面的操 ...

  7. shell脚本,awk替换{}里面的内容

    如何将oxo{axbxc}oxo{dxexf}oxo里面的{}里面的x 替换为; 用awk实现 [root@localhost 09-30]# echo 'oxo{axbxc}oxo{dxexf}ox ...

  8. shell脚本,awk常见初始化变量的题目。

    文件 内容如下 clone=line1gb=line1gi=line1lib=line1gb=line2gi=line2lib=line2clone=line3gb=line3gi=line3lib= ...

  9. shell脚本,awk如何处理文件中上下关联的两行。

    文件d.txt如下内容 ggg 1portals: 192.168.5.41:3260werew 2portals: 192.168.5.43:3260 如何把文件d.txt内容变为如下内容 ggg  ...

随机推荐

  1. C++ 单例模式(懒汉、饿汉模式)

    1.简单的单例模式实现 2.C++的构造函数不是线程安全的,所以上述代码在多线程的情况下是不安全的,原因是new Singelton时,这句话不是原子的,比如一个线程执行了new的同时,另一个线程对i ...

  2. 【C++ const_cast强制转换】

  3. polymorphism多态

    [概念] 方法名相同,具体操作根据类不同. eg 有open()方法的ebook, kindle 都会被打开 eg 动物叫声不同 inheritance:只有superclass subclass都有 ...

  4. linux命令学习之:ps

    Linux中的ps命令是Process Status的缩写.ps命令用于报告当前系统的进程状态,列出系统中当前运行的那些进程.可以搭配kill指令随时中断.删除不必要的程序. 要对进程进行监测和控制, ...

  5. Eigen解线性方程组

    一. 矩阵分解: 矩阵分解 (decomposition, factorization)是将矩阵拆解为数个矩阵的乘积,可分为三角分解.满秩分解.QR分解.Jordan分解和SVD(奇异值)分解等,常见 ...

  6. C单链表操作

    #include <stdio.h> #include <stdlib.h> #define ElemType int #define Status int #define O ...

  7. python爬虫 urllib库基本使用

    以下内容均为python3.6.*代码 学习爬虫,首先有学会使用urllib库,这个库可以方便的使我们解析网页的内容,本篇讲一下它的基本用法 解析网页 #导入urllib from urllib im ...

  8. day1-windows下python和selenium的安装

    这是一个完整的安装包,下载下来是一个.exe的文件 只需双击,下一步下一步默认安装即可 python从2.7开始都会携带pip插件,做了scripe的环境变量可以,在网络畅通的情况下可以在cmd的命令 ...

  9. 基于稀疏表(Sparse Table)的RMQ(区间最值问题)

    在RMQ的其他实现方法中,有一种叫做ST的算法比较常见. [构建] dp[i][j]表示的是从i起连续的2j个数xi,xi+1,xi+2,...xi+2j-1( 区间为[i,i+2j-1] )的最值. ...

  10. 开发中,android手机WIFI无法使用,无SIM卡故障解决

    用eclipse 开发android中,突然出现,android手机WIFI无法使用,无SIM卡故障解决 发现故障后,想办法刷机(没有成功),触点清洁都搞了. 最后恢复出厂设置居然解决了,留资料给同行 ...