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都是针对列操作,有没有对行操作的命令?的主要内容,如果未能解决你的问题,请参考以下文章