大数据之Shell编程(三) 高级文本处理文本

目录

  • 1.命令cut
  • 2.命令sort

1.命令cut

cut命令用于对文本进行切割

- 基本用法:

用法:cut [选项]... [文件]...
从每个文件中输出指定部分到标准输出。

长选项必须使用的参数对于短选项时也是必需使用的。
  -b, --bytes=列表        只选中指定的这些字节
  -c, --characters=列表       只选中指定的这些字符
  -d, --delimiter=分界符   使用指定分界符代替制表符作为区域分界
  -f, --fields=LIST       select only these fields;  also print any line
                            that contains no delimiter character, unless
                            the -s option is specified
  -n                      with -b: don't split multibyte characters
      --complement      补全选中的字节、字符或域
  -s, --only-delimited      不打印没有包含分界符的行
      --output-delimiter=字符串    使用指定的字符串作为输出分界符,默认采用输入
                的分界符
      --help        显示此帮助信息并退出
      --version     显示版本信息并退出

仅使用f -b, -c 或-f 中的一个。每一个列表都是专门为一个类别作出的,或者您可以用逗号隔
开要同时显示的不同类别。您的输入顺序将作为读取顺序,每个仅能输入一次。
每种参数格式表示范围如下:
    N   从第1 个开始数的第N 个字节、字符或域
    N-  从第N 个开始到所在行结束的所有字符、字节或域
    N-M 从第N 个开始到第M 个之间(包括第M 个)的所有字符、字节或域
    -M  从第1 个开始到第M 个之间(包括第M 个)的所有字符、字节或域

当没有文件参数,或者文件不存在时,从标准输入读取 

- 例如:

>>> wc functest.sh -c # 获取多少个字符
>>> 187 functest.sh
# 比如如果我们现在想要获取187,而不要脚本名称,那么就可以对上面的输出进行切割
>>> wc functest.sh -c | cut -d ' ' -f 1  # 使用' '进行分割,获取第一个参数
>>> 187

#  将PATH变量取出, 我要找出第5个变量
>>> echo $PATH | cut -d ':' -f 5

#  将PATH变量取出, 我要找出第3和5个变量
>>> echo $PATH | cut -d ':' -f 3,5

#  将PATH变量取出, 我要找出第3到最后一个
>>> echo $PATH | cut -d ':' -f 3-

#  将PATH变量取出, 我要找出第3到第5个
>>> echo $PATH | cut -d ':' -f 3-5

# 只显示/etc/passwd的用户和shell
>>> cat /etc/passwd | cut -d ':' -f 1,7

2.命令sort

sort 对文件按行排序

- 基本用法:

用法:sort [选项]... [文件]...
 或:sort [选项]... --files0-from=F
串联排序所有指定文件并将结果写到标准输出。

长选项必须使用的参数对于短选项时也是必需使用的。
排序选项:

  -b, --ignore-leading-blanks   忽略前导的空白区域
  -d, --dictionary-order    只考虑空白区域和字母字符
  -f, --ignore-case     忽略字母大小写
  -g, --general-numeric-sort    按照常规数值排序
  -i, --ignore-nonprinting  只排序可打印字符
  -M, --month-sort      比较 (未知) < "一月" < ... < "十二月"
                在LC_ALL=C 时为(unknown) < `JAN' < ... < `DEC'
  -h, --human-numeric-sort    使用易读性数字(例如: 2K 1G)
  -n, --numeric-sort        根据字符串数值比较
  -R, --random-sort     根据随机hash 排序
      --random-source=文件    从指定文件中获得随机字节
  -r, --reverse         逆序输出排序结果
      --sort=WORD       按照WORD 指定的格式排序:
                    一般数字-g,高可读性-h,月份-M,数字-n,
                    随机-R,版本-V
  -V, --version-sort        在文本内进行自然版本排序

其他选项:

      --batch-size=NMERGE   一次最多合并NMERGE 个输入;如果输入更多
                    则使用临时文件
  -c, --check, --check=diagnose-first   检查输入是否已排序,若已有序则不进行操作
  -C, --check=quiet, --check=silent 类似-c,但不报告第一个无序行
      --compress-program=程序 使用指定程序压缩临时文件;使用该程序
                    的-d 参数解压缩文件
      --files0-from=文件  从指定文件读取以NUL 终止的名称,如果该文件被
                    指定为"-"则从标准输入读文件名
  -k, --key=位置1[,位置2]   在位置1 开始一个key,在位置2 终止(默认为行尾)
  -m, --merge           合并已排序的文件,不再进行排序
  -o, --output=文件       将结果写入到文件而非标准输出
  -s, --stable          禁用last-resort 比较以稳定比较算法
  -S, --buffer-size=大小  指定主内存缓存大小
  -t, --field-separator=分隔符 使用指定的分隔符代替非空格到空格的转换
  -T, --temporary-directory=目录  使用指定目录而非$TMPDIR 或/tmp 作为
                    临时目录,可用多个选项指定多个目录
  -u, --unique      配合-c,严格校验排序;不配合-c,则只输出一次排序结果
  -z, --zero-terminated 以0 字节而非新行作为行尾标志
      --help        显示此帮助信息并退出
      --version     显示版本信息并退出

POS 是F[.C][OPTS],F 代表域编号,C 是域中字母的位置,F 和C 均从1开始计数
如果没有有效的-t 或-b 选项存在,则从前导空格后开始计数字符。OPTS 是一个或多个
由单个字母表示的顺序选项,以此覆盖此key 的全局顺序设置。如果没有指定key 则
将其整个行。

指定的大小可以使用以下单位之一:
内存使用率% 1%,b 1、K 1024 (默认),M、G、T、P、E、Z、Y 等依此类推。

如果不指定文件,或者文件为"-",则从标准输入读取数据。

- 例如:

# 

原文地址:https://www.cnblogs.com/wuqinghua-blog/p/10498793.html

时间: 2024-11-02 17:58:47

大数据之Shell编程(三) 高级文本处理文本的相关文章

大数据学习——shell编程

03/ shell编程综合练习 自动化软件部署脚本 3.1 需求 1.需求描述 公司内有一个N个节点的集群,需要统一安装一些软件(jdk) 需要开发一个脚本,实现对集群中的N台节点批量自动下载.安装jdk 2.思路 1/ 编写一个启动脚本,用来发送一个软件安装脚本到每一台机器 2/ 然后启动每台机器上的软件安装脚本来执行软件下载和安装 3.expect的使用 痛点:使用scp命令远程拷贝文件时,会有人机交互的过程,如何让脚本完成人机交互? 妙药: expect 用法示例: 先观察  ssh lo

学大数据需要什么编程基础?大数据学习步骤是什么?

学大数据需要什么编程基础?大数据学习步骤是什么? 大数据是什么? 有很多朋友问过我,大数据到底是什么?一句话来- 学大数据需要什么编程基础?大数据学习步骤是什么?大数据是什么? 有很多朋友问过我,大数据到底是什么?一句话来概括 针对非软件行业的朋友 根据你平时在超市,加油站,饭店等地方的一些消费行为,通过大数据这个技术,我们可以知道你现在的年龄范围,是否婚配,是否有孩子,孩子大致是几岁,是否有固定住宅,车大致是什么价位的等信息. 针对软件行业的朋友 平时我们写的程序都是在一台机器上运行,处理能力

(转)我所经历的大数据平台发展史(三):互联网时代 ? 上篇

编者按:本文是松子(李博源)的大数据平台发展史系列文章的第二篇(共四篇),本系列以独特的视角,比较了非互联网和互联网两个时代以及传统与非传统两个行业.是对数据平台发展的一个回忆,对非互联网.互联网,从数据平台的用户角度.数据架构演进.模型等进行了阐述. 前言,本篇幅将进入大家熟知的互联网时代,数据平台发展史仅是自己经历过由传统数据平台到互联网数据平台发展一些简单回忆,在这一篇章中将引用部分互联网数据平台架构,在这里仅作案例. 我相信很多从传统行业转到互联网时是各种不适应,适应短则几个月,长则一年

大数据形势下的三种数据融合方式:组合、整合和聚合

一. 跨行业数据合作背景 国务院副总理马凯,曾经在2015贵阳国际大数据产业博览会中提到: 融合是大数据的价值所在,应大力推动大数据与产业融合,面向工业.交通.物流.商贸.金融.电信.能源等数据量大的行业领域,开展数据开发和交易,充分挖掘大数据的商业价值,促进产业提质增效升级. 另外,<大数据时代>的作者舍恩伯格,在该书中也提到一个观点:"大数据不是随机样本而是全体数据". 无论是从国家政府部门还是领域专家都不约而同的提到数据需要融合,数据融合才有价值. 二. 为什么需要数

DT大数据梦工厂第三十五课 Spark系统运行循环流程

本节课内容: 1.     TaskScheduler工作原理 2.     TaskScheduler源码 一.TaskScheduler工作原理 总体调度图: 通过前几节课的讲解,RDD和DAGScheduler以及Worker都已有深入的讲解,这节课我们主要讲解TaskScheduler的运行原理. 回顾: DAGScheduler面向整个Job划分多个Stage,划分是从后往前的回溯过程:运行时从前往后运行的.每个Stage中有很多任务Task,Task是可以并行执行的.它们的执行逻辑完

大数据时代之hadoop(三):hadoop数据流(生命周期)

了解hadoop,首先就需要先了解hadoop的数据流,就像了解servlet的生命周期似的.hadoop是一个分布式存储(hdfs)和分布式计算框架(mapreduce),但是hadoop也有一个很重要的特性:hadoop会将mapreduce计算移动到存储有部分数据的各台机器上. 术语 MapReduce 作业(job)是客户端需要执行的一个工作单元:它包括输入数据.mapreduce程序和配置信息.hadoop将作业分成若干个小任务(task)来执行,其中包括两类任务:map任务和redu

大数据Hadoop Streaming编程实战之C++、Php、Python

Streaming框架允许任何程序语言实现的程序在HadoopMapReduce中使用,方便已有程序向Hadoop平台移植.因此可以说对于hadoop的扩展性意义重大.接下来我们分别使用C++.Php.Python语言实现HadoopWordCount. 实战一:C++语言实现Wordcount 代码实现: 1)C++语言实现WordCount中的Mapper,文件命名为mapper.cpp,以下是详细代码 #include #include #include usingnamespacestd

linux shell编程(三) if 和 for

if 条件判断: 单分支的if语句if 判断条件: then statement1fi双分支的if语句if 判断条件;then statement1 statementelse statement3fi多分支的if语句if 判断条件1:then statement1 elif 判断条件2:then statement2 elif 判断条件3:then statement3 else statement4fi for循环for 变量 in 列表;do 循环体 done

Linux Shell编程三

case分支条件语句. case "string" in pattern_1) commands ;; pattern_2) commands ;; *) commands ;; esac 当条件语句中的string等于patern字符串时执行pattern下面命令. 当没有符合条件时,最后执行*). ";;"相当于switch语句中的break关键字,不加";;"会报错.