linux 管道使用方法,Linux 管道命令

cut

在一行中取出部分数据,以行为单位

cut -d '分隔符 ' -f fields

$ pwd /home/users/chenzhaoqun

$ pwd | cut -d '/' -f 1

$ pwd | cut -d '/' -f 2

home

$ pwd | cut -d '/' -f 3

users

$ pwd | cut -d '/' -f 4

chenzhaoqun

$ pwd | cut -d '/' -f 3,4

users/chenzhaoqun

cut -c 字符范围

以字符为单位取出固定字符区间

$ export

declare -x ANT_HOME="/home/tools/tools/ant/apache-ant-1.6.5"

declare -x ANT_HOME_1_7="/home/tools/tools/ant/apache-ant-1.7.1" declare -x G_BROKEN_FILENAMES="1"

$ export | cut -c 12-

ANT_HOME="/home/tools/tools/ant/apache-ant-1.6.5" ANT_HOME_1_7="/home/tools/tools/ant/apache-ant-1.7.1" G_BROKEN_FILENAMES="1"

$ export | cut -c 12-15

ANT_

ANT_

G_BR

grep

分析一行,有我们需要的信息就将该行拿出来

grep [-acinv] [--color=auto] '查询字符串' filename

-a

将二进制文件以text方式查询

-c

计算找到字符串的次数

-i

忽略大小写

-n

输出行号

-v

反向选择,显示不包含‘查询字符串’的行

表2-1 grep使用的正则表达式元字符

元字符

功能

示例

匹配对象

^

行首定位符

‘^love’

匹配所有以love开头的行

$

行尾定位符

‘love$’

匹配所有以love结尾的行

.

匹配单个字符

‘l..e’

匹配包含一个l,后面跟两个字符,再跟一个e的行

*

匹配0或者多个重复的位于*前的字符

‘*love’

匹配包含跟在0个或者多个字符后的love的行

[]

匹配一组字符中的任意一个

‘[Ll]ove’

匹配Love或者love

[^]

匹配不在指定组内的字符

’[^A-Z]’

匹配不在范围A至Z之间的任意一个字符

<

词首定位符

匹配包含以love开头的词的行

<

词尾定位符

‘love/>’

匹配包含以love结尾的词的行

(..)

标记匹配到的字符

’(love)ing’

模式love被保存在1号寄存器中,之后可用\1引用它

x{m}或x{m,}或x{m,n}

字符x的重复次数:m次、至少m次、至少m次但不超过n次

‘o{5}’,’o{5,}’ ,’o{5,10}’

匹配连续出现5个o、至少5个o或者5~10个o的行

其他方法:

1、使用多个 -e 参数

如:netstat -an | grep -E "ESTABLISHED|WAIT"

注意:netstat -an | grep -e EST -e WAIT 并列使用多个 -e参数可以实现或条件

2、使用扩展

如:netstat -an | grep -E "ESTABLISHED|WAIT"

注意:此处的 -E 是大写 ,匹配条件一定要加 引号

sort

sort [-fbMnrtuk] [file or stdin]

-f

忽略大小写

-b

忽略行前的空格

-M

以月份的名字来排序,JAN > DEC

-n

使用“纯数字”排序

-r

反向排序

-u

uniq

-t

指定分隔符,默认是TAB

-k

以分割之后的哪个field来排序

uniq

uniq [-ic]

-i

忽略大小写

-c

进行计数

$ last | cut -d ' ' -f1 | sort | uniq -c | sort -r -n

345 root

171 duanzhib

126 zouxidon

68 zhouqian

68 chenzhao

37 wangjinl

35 jiangwei

last命令列出最近登录的用户列表

第一列为用户名

最后的结果是按登录次数逆序的排名

综合使用案例:

一个文件similog中有很多行:

debug:[一汽%20夏利n5,一汽%20夏利n5][1,2] simi 100, interval 16

想要把simi后面的分数取出来,并统计分布

cat similog | cut -d ']' -f 3 | cut -d ' ' -f 3 | tr -d ',' | sort -n | uniq -c

cat similog 不解释

cut -d ']' -f 3 取出 simi 100, interval 16

cut -d ' ' -f 3 取出100,

tr -d ',' 删除,

sort -n 排序

uniq -c 统计出现的次数

tee

tee [-a] file

-a 对file进行续写,append文件模式

tee是将stdout转存一份到文件,又不影响stdout的输出,后面还可以被其他命令处理

字符转换命令 tr col join paste expand

tr [-ds] SET1 [SET2]

参数

解释

-d

删除str

-s

替换掉重复的字符

-t

将SET1按SET2的长度截断

tr '[a-z]' '[A-Z]'

upper case

col [-xb]

参数

解释

-x

将tab转成空格

-b

将/,仅保留/最后接的字符

join [-ti12] file1 file2

将两个文件的按照第一列合并

参数

解释

-t

指定列分隔符,默认是空格

-i

忽略大小写

-1 n

对文件1按第n列比较

-2 n

对文件2按第n列比较

join -1 3 file1 -2 4 file2

这是file1的第3列和file2的第4列,就会合并,然后放到第1列,后面接剩余的数据

注意:对比时两文件要sort

paste [-d] file1 file2

将两个文件的每行合并成一行,中间被分隔符分割

参数

解释

-d

指定分隔符

把file写成- 表示来自std input的意思

expand [-t] file

将tab转成空格,-t指定转成空格的个数

split

split [-bl] file PREFIX

将一个大文件切割成指定大小或指定行的小文件

参数

解释

-b

按大小分割,可加单位,b, k, m

-l

按行数分割

PREFIX

分割后文件名的前缀

-a

suffix length,默认为2,且是aa,ab,ac…命名

-d

以数字作为后缀

文件合并

使用重定向

如将file1,file2,file3合并成file

cat file1 file2 file3 >> file

cat file* >> file

xargs

xargs [-0epn] command

为command生成参数,并且执行command

因为有些command不支持直接使用管道,可以从stdin读入,使用空格分割,然后作为command的参数执行

参数

解释

-0

还原stdin中的特殊字符,如 ` \ 空格等,为一般字符

-e

后面接一个字符串,xargs分析到该字符串时就停止,该字符串不会被使用

-p

每次执行command,都询问

-n

command使用n个参数,更多的都会忽略

- 减号

可以用-表示stdin或stdout,放在应该写file的地方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值