您的位置:首页 > 运维架构 > Shell

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

2012-10-18 14:16 381 查看
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个字段
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: