Linux:cut、sort都是针对列操作,有没有对行操作的命令?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux:cut、sort都是针对列操作,有没有对行操作的命令?相关的知识,希望对你有一定的参考价值。

sort命令用于对文档内容进行排序处理,命令使用格式如下:
sort 选项 文件1 文件2 ......
sort命令的常用选项包括:
-t 指定分割文本的分隔符
-k 指定按照分割后文本内容的第几列排序
-r 结果降序排序
-n 把文本转换为数值再排序
使用sort命令的示例如下:
①sort -rn -k 2 f1:按照文档第二列的数值大小进行降序排序。-n表示按照数值大小比较排序,默认为升序,加上-r表示为降序,-k指定按照第几列排序。
②sort -rn -u -k 2 f1:-u表示去除重复行。
③sort -t ":" -rn -k 2 f1:-t指定列之间的分隔符为“:”,不写则默认空格作为分隔符。
cut命令用于显示按照分隔符截取分指定列的文本内容,命令使用格式如下:
cut 选项 文件1 文件2 ......
cut命令的常用选项包括:
-d 指定文本分隔符
-f 指定显示分割后文本的第几列
cut -d " " -f 3 f1:截取文档中的第三列。-d指定分隔符为一个空格,-f指定显示第几列。但是,cut命令对分隔符连续较多的情况,审核较为死板,很难按照我们想要的效果实现截取,如有以下文件:
aaa 111 ccc
bbb 222 ccc
每行文字中各列间的空格数不同,“aaa”与“111”之间有一个空格,而“bbb”与“222”之间有两个空格,在使用cut命令时,如果设定分隔符为一个空格,希望截取用空格隔开的文字时,对于行“bbb 222”由于文字中存在二个空格,其中的第二个空格则被视为第二列,所以cut命令不会把“222”视为第二列而是第三列。因此,cut在截取数量不确定的空格隔开的文字时十分不便。所以一般在连续分隔符个数不统一时,更习惯使用awk命令。
参考技术A 当然有啦,grep, sed 就是 参考技术B sed awk对行列都可以操作,建议看看sed awk的手册

cut命令

1.cut命令

sort可以针对行进行排序,grep可以针对行进行过滤。cut可以针对列进行操作的。


2.cut命令的使用方法

语法:

cut [选项] 文件


选项:

d:指定分隔符,默认空格,制表符。如:-d ":"

f:指定操作第几列,多列需要逗号隔开。如:-f 1,3-6

b:指定截取的字节。

c:指定截取的字符。

s:没有分隔符的行不显示。

多个文件用空格分隔开。


范围:

1-4,6 //1 2 3 4 6列

3,5,8 //3 5 8列

-4,6 //1 2 3 4 6列

3- //3列到最后


3.实例

3.1 只显示用户,UID和shell类型 d f

-d指定了分隔符为冒号,-f选择指定的行。

# cut -d ":" -f 1,3,7 passwd

root:0:/bin/bash

bin:1:/sbin/nologin

daemon:2:/sbin/nologin

adm:3:/sbin/nologin

lp:4:/sbin/nologin


3.2 只显示用户,UID,GID, shell类型 -f

f可以使用范围。

# cut -d ":" -f 1,3-4,7 passwd

root:0:0:/bin/bash

bin:1:1:/sbin/nologin

daemon:2:2:/sbin/nologin

adm:3:4:/sbin/nologin

lp:4:7:/sbin/nologin


3.3 截取12346个字符 -c

# cut -c 1-4,6 passwd

rootx

bin::

daemn

adm::

lp:x4


以上是关于Linux:cut、sort都是针对列操作,有没有对行操作的命令?的主要内容,如果未能解决你的问题,请参考以下文章

Linux中cut,sort,uniq和wc的用法

shell学习文件操作之sort,cut,uniq

不就是切割命令吗?大神才懂的Linux系统切割工具-cut

利用Linux命令行进行文本按行去重并按重复次数排序

linux sort,uniq,cut,wc命令详解

linux sort,uniq,cut,wc命令详解