linux 管道命令 sort,Linux之管道命令(cut,grep,sort,wc,uniq...)

本文详细介绍了Linux中常用的命令,包括管道(pipe)、重定向和一系列文本处理工具,如cut、grep、sort、uniq、wc等。通过实例演示了这些命令的使用方法和参数,帮助读者理解和掌握如何在Linux环境中筛选、排序和统计文本信息。
摘要由CSDN通过智能技术生成

管道命令(pipe):

例:ls /etc | less;这个 `|` 就是管道命令,仅能处理经由前面一个命令传来的正确信息,也就是 standard output 的信息,对于 standard error 并没有直接处理的能力。下面来介绍一下一些管道命令。

选取命令(cut,grep)

cut:可以将一段信息的某一段 “切” 出来,处理的信息是以 “行” 为单位。

语法:

cut -d '分割字符' -f fields;             //用于分割字符

cut -c 字符范围;                          //用于排列整齐的信息

参数:

-d:后面接分割字符,与 -f 一起使用;

-f:依据 -d 的分割字符将一段信息切割成为数段,用于 -f 取出第几段的意思;

-c:以字符(characters)的单位取出固定字符区间。

范例:echo $PATH | cut -d ':' -f 5;    echo $PATH | cut -d ':' -f 3,5;    export | cut -c 1-20

grep:刚才的cut是在一行信息当中取出某部分我们想要的,而grep则是分析一行信息,若当中有我们                     需要的信息,就将改行拿出来。

语法:

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

参数:

-a:将 binary 文件以text文件的方式查找数据;

-c:计算找到 ‘查找字符串’ 的次数;

-i: 忽略大小写的不同,所以大小写视为相同;

-n:顺便输出行号;

-v:反向选择,即显示出没有 '查找字符串' 内容的那一行;

--color=auto:可以将找到的关键字部分加上颜色显示;

范例:

last | grep 'root'               //将 last 当中有出现root的那一行都取出来

last | grep -v 'root'           //与上个例子相反,只要没有root的行

last | grep 'root' | cut -d ' ' -f 1    //取出数据后把根据 ' ' 分割取第一列

grep --color=auto 'MANPATH' /etc/man_db.conf

grep是一个很棒的命令。支持的语法很多,用在正则表达式里头,能够处理很多数据

排序命令(sort,wc,uniq)

sort:可以依据不同的数据类型进行排序。

语法:

sort [-fbMnrtuk] [file or stdin]

参数:

-f:忽略大小写的差异,例如 A 与 a 视为编码相同;

-b:忽略最前面的空格符部分;

-M:以月份的名字来排序,例如 JAN,DEC 等的排序方法

-n:使用“纯数字”进行排序(默认是以文字类型来排序)

-r:反向排序;

-u:就是 uniq ,相同的数据中,仅出现一行代表

-t:分隔符,默认使用(tab)键来分隔;

-k:以那个区间(field)来进行排序的意思

范例:

cat /etc/passwd | sort  //可以看到默认“以第一个”数据来排序,而且默认“文字”类型排序

cat /etc/passwd | sort -t ':' -k 3  //可以看到每一行经过 ‘:’ 分隔后的第三列,但是这个排                             序是按照文字类型排序,如果要按照数字排序,cat /etc/passwd | sort -t ':' -k 3 -n

last | cut -d ' ' -f 1 | sort //利用 last 将输出的数据仅取账号,并加以排序

uniq:将重复的数据仅列出一个显示。

语法:

uniq [-ic]

参数:

-i:忽略大小写字符的不同;

-c:进行计数

范例:

last | cut -d ' ' -f 1 | sort | uniq //将账号列出,仅取出账号列,进行排序后仅取出一位

last | cut -d ' ' -f 1 | sort | uniq -c //承上例,查到每个人登陆次数

wc:可以帮我们计算输出的信息的整体数据

语法:

wc [-lwm]

参数:

-l:仅列出行;

-w:仅列出多少字(英文单字);

-m:多少字符。

范例:

cat /etc/man_db.conf | wc  //依次列出 行,字数, 字符数

//我们可以用 last 输出登陆者,但是 last 最后两行并非账号内容,我该如何以一行命令串取                         得这个月份登陆系统的总人次? last | grep [a-zA-z] | grep -v 'wtmp' | wc -l

双向重定向:(tee)

tee:可以同时将数据流送到文件和到屏幕,而输出到屏幕的,其实就是stdout,可以继续处理

语法:tee [-a] file

参数:

-a:以累加(append)的方式,将数据加入file当中;

范例:

last | tee last.list | cut -d ' ' -f 1  //将 last 的输出内容存到last.list文件中

ls -l / | tee -a ~/homefile | more //加上-a将信息累加如文件中

字符转换命令(tr,col,join,paste,expand)

tr:可以用来删除一段信息当中的文字,或者是进行文字信息的替换

语法:

tr [-ds] SET1 ...

参数:

-d:删除信息当中的 SET1 这个字符串;

-s:替换掉重复的字符。

范例:

last | tr '[a-z]' '[A-Z]'    //将 last 输出数据中所有小写字符变成大写字符,不加单引号也可以

cat /etc/passwd | tr -d ':' //将/etc/passwd输出信息中的冒号(:)删除

col:col经常被利用于将 man page 转存为纯文本文件以方便查阅的功能

语法:

col [-xb]

参数:

-x:将tab键转换成对等的空格键

-b:在文字内有反斜杠(/)时,仅保留反斜杠最后接的那个字符

。。。。。。。。。。。。。。。。。更新中。。。。。。。。。。。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值