BASH命令和SHELL脚本总结(12)如何对字段进行操作

来源:互联网 发布:混合高斯模型的em算法 编辑:程序博客网 时间:2024/06/06 07:39

100%转载自 http://ahei.info/text-processing.htm

cut的用法


挺常用的一个命令, 能非常方便的取某个字段
-f, –fields=LIST 

选择要输出的字段
-c, –characters=LIST 

选择要输出的字符
-b, –bytes=LIST 

选择要输出的字节
-d, –delimiter=DELIM 

设定字段分隔符, 默认是TAB. 可惜的是, 该分隔符也只能是单个字符.
–complement 

取设定的选择LIST的补集
-s, –only-delimited 

忽略不包含分隔符的行, 默认操作是输出整行
–output-delimiter=STRING 

设定输出分隔符
 LIST 

-f, -c, -b选项使用的列表, 可以有下面几种形式:
N 第N个字段/字节/字符
N-从第N个到最后一个
M-N 从第M个到第N个
-M 从第一个到第N个
列表可以有多个, 之间以逗号分割, 比如: cut -f1-3,4-7


paste的用法

这个命令很有意思, 把两个文件按行粘贴到一块, 曾经我想自己写个程序搞定这个需求, 后来发现linux下竟然已经有这玩意了(linux总能给你带来惊喜)
$ cat num2
1
2
$ cat let3
a
b
c
$ paste num2 let3
1       a
2       b
        c
-d, –delimiters=LIST 

paste两个文件的时候, 默认是用TAB分割, 这个选项设定分隔符, 同为可惜的是, 只能为单个字符(主要是paste可以粘贴多个文件, 这个选项的第二个字符用来分割第二个和第三个文件)
-s, –serial 

默认paste是竖着粘贴的, 加了这个选项后, 就横着粘贴了:
$ paste -s num2 let3
1       2
a       b       c


join的用法

这是一个稍微高级点的命令, 它把输入文件当成一个key/value对, 然后会把同一个key的所有value粘贴到一块, 来个例子:

$ cat file1
a 1
b 2
c 3
$ cat file2
a 4
c 6
$ join file1 file2
a 1 4
c 3 6
join默认把第一额字段当作key, 字段之间以空格分割, 作为key的字段必须有序.

-i, –ignore-case  比较字段时, 忽略大小写
-t CHAR  使用CHAR作为字段分隔符, 又是只能为单个字符(杯具…)
-1 FIELD  设定第一个文件的key为第FIELD个字段
-2 FIELD 设定第二个文件的key为第FIELD个字段


原创粉丝点击