linux命令-cut

很久之前就不是很系统的学习了linux常用的处理字符的命令.虽然当时学习进展自己也很满意.但是过后又容易忘记.

现在系统的学了linux的shell命令.简单的总结一下:

cut顾名思义,用来把目标砍成一段一段的.简单看下用法.

cut [-b | -c |  -f ] "数字" -d "seprate" --complement --output-delimiter

-b以字节为单位进行分割

-c以字符为单位进行分割

-f以单词为单位进行分割.

说实话,-b-c我实在不知道该怎么区分,怎么用也看不出区别.至少规则文件,一个自己就是一个字符啊.

这三个选项后面可以跟数字,比如:

cut -f 1 filename    表示仅仅显示第一列

cut -f 1,2 filename   表示显示1和2列

cut -f 1-4 filename   表示显示1到4列

-d   指定分割符.默认是\t.这个后面用一个小例子说明一下,吃过亏,往往记得牢.

--complement   取补集.不难理解对吧.

--output-delimiter   输出分隔符.

常用的就是这些.下面结合我的一个乌龙来简单的用一下cut.

我用vim编辑了一个规则的文件.

No	Name	Mark	Percent
1	Sarath	45	90
2	Alex	49	98
3	Anu	45	90

满以为结果会完全和预期一样.结果被打脸.

相信原因一目了然,无非就是分隔符的问题.

为什么会有这种问题呢.我明明键入的时候,用的是tab啊.

这要从vim说起.

vim有个命令叫set expandtab.可能是为程序员专门这几的,目的是将tab拓展成指定宽度个数的空格.所以看似它是tab,其实已经替换成空格了.

怎么办呢?

先说说怎么查看是否有tab分割.

1. 如果在vim下.冒号set list .就可以查看分隔符的类型了.换行是$ , tab是^I .一幕了然.我得vim因为没有tab结果就是这样的.

2. 如果不在vim环境下,也好办,用cat -T .也可以查看.结果不贴了.

怎么解决呢?方法也有很多种.

1. 同样先从vim环境下说起吧.确认没有tab以后首先:set noexpandtab . 然后:%s/ \+/\t/g

就可以了.注意千万不要把+换成*.会死的很惨.正则表达式里面,+的意思是至少有一个,而*号的意思是可以没有.

2. sed命令解决.正则是一样的.sed -i "s/ \+/\t/g"

3. tr命令解决:要稍微绕一点.tr命令回头再详细介绍.先领略一下它的魅力.   tr -s " " < filename | tr " " "\t"

补充: tr职能从标准输入接受数据.其输出只能到标准输出.同学们如果要用这个命令,不要忘记在最后重定向一下.

-s  去除其后面接的参数的重复,只保留一个.  然后在把空格替换成\t

好滴,修改以后的文件使用cat看下:

ok.看下各个场景的结果吧.

补充一点: -f -c -b后面可以接的数字类型:

n,m   打印n和m

n-m   打印n到m

n-      从n开始打印直到最后

-m     从头开始打印直到m

ok,就总结这么多吧.有兴趣的同学,可以立刻就敲敲,加深一下印象.

时间: 2024-08-28 21:25:43

linux命令-cut的相关文章

linux 命令cut用法

cut命令        cut [OPTION]... [FILE]...            -d DELIMITER: 指明分隔符            -f FILEDS:                #: 第#个字段                #,#[,#]离散的多个字段例如1,3,6                #-#连续的多个字段, 例如1-6 混合使用1-3,7            --output-delimiter=STRING             [[ema

linux命令cut用法

--按文件大小排序 显示前100行 显示后五列 ll -Sh|head -n 100|cut -d ' ' -f 5- 一.基本语法cut是一个选取命令,以行为单位,用指定分隔符将行切分为若干字段,选取所需要的字段.1.语法格式cut [option] filesoption常用参数如下: -d:用来定义分隔符,默认为tab键,一般与-f配合使用(如果分隔符是空格,必须是两个单引号之间确实有一个空格,是一个哦,不是支持多个)-f:需要选取的字段,根据-d切分的字段集选取,下标从1开始-s:表示不

Linux命令cut

原文 cut 文件内容查看 显示行中的指定部分,删除文件中指定字段 显示文件的内容,类似于下的type命令. 说明 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上:其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中. 当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容.因此,一般用more等命令分屏显示. 为了控制滚屏,

linux命令 cut grep

cut 处理log数据等,切出想要的信息. cut -d '分隔符' -f   '第几段'   和-f同时使用 -c    字符区间  截取字符区间 原文地址:https://www.cnblogs.com/hellohell/p/8192232.html

Linux之cut命令

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.一般来说,选取信息通常是针对"行"来进行分析的,并不是整篇信息分析的. (1)其语法格式为:cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file] 使用说明cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准输出.如果不指定 File 参数,cut 命令将读取标准输入.必须指定 -b.-c 或 -f 标志之一. 主要参数-b :以字节为单位进

Linux命令:cp、time、cut、awk 、获取文件大小命令

最近写了一个shell脚本,用到了cp.time.cut.awk命令,把他们的使用方法给写下来: 1.cp和mv cp命令:用来完成文件的复制,从源文件夹复制到目标文件夹.执行后源文件夹和目标文件夹均有源文件. mv 命令:用来移动文件.执行后,源文件夹中没有源文件.我经常用mv命令来重命名文件 注意:cp命令源文件夹与目标文件夹不能使同一个:而在mv中可以是同一个. 命令解析: #cp [-R] 源文件 目标文件夹 cp -R 参数 ---当复制整个文件夹时使用. #mv 源文件 目标文件夹

Linux——note shell常用命令 cut 、sort、unqi、tee、tr、split和shell中连接符&& ||

1.cut 常用作将一个文件分段 cut -d'分隔符' [-cf] n -d 后面指定分隔符,用单引号引起来. -f 指定第几段 -c 后面只有一个数字表示截取第几个字符,后面跟一个数字区域,表示截取从几到几. [[email protected] ~]# cut -d: -f 3 /etc/passwd [[email protected] ~]# cut -d: -f 3,4 /etc/passwd [[email protected] ~]# cut -c 10 /etc/passwd

Linux 之Cut命令详解

摘自:http://blog.csdn.net/zsf8701/article/details/7718680 Linux 之Cut命令详解 cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的. (1)其语法格式为: cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file] 使用说明 cut 命令从文件的每一行剪切字节.字符和字段并将这些字节.字符和字段写至标准

Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs

在每个管线后面接的第一个数据必定是『命令』喔!而且这个命令必须要能够接受 standard input 的数据才行,这样的命令才可以是为『管线命令』,例如 less, more, head, tail 等都是可以接受 standard input 的管线命令啦.至于例如 ls, cp, mv 等就不是管线命令了!因为 ls, cp, mv 并不会接受来自 stdin 的数据. 也就是说,管线命令主要有两个比较需要注意的地方: 管线命令仅会处理 standard output,对于 standar