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

Posted 新科鲁兹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之Shell编程 高级文本处理文本相关的知识,希望对你有一定的参考价值。

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 等依此类推。

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

- 例如:

# 

以上是关于大数据之Shell编程 高级文本处理文本的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程之正则表达式三剑客——awk工具

shell 文本处理之 awk

Shell编程之正则表达式

自动化运维必须要学的Shell文本处理三剑客之——grep的高级选项

4.shell编程-文本处理三剑客之sed

shell编程之文本小工具