做做做网站,php开发手机端网站开发,毕节网站网站建设,云南站群网站建设cut是一个选取命令#xff0c;就是将一段数据经过分析#xff0c;取出我们想要的。一般来说#xff0c;选取信息通常是针对“行”来进行分析的#xff0c;并不是整篇信息分析的 其语法格式为#xff1a; cut [-bn] [file] 或 cut [-c][file] 或 cut [-df] [file]使用说明:…cut是一个选取命令就是将一段数据经过分析取出我们想要的。一般来说选取信息通常是针对“行”来进行分析的并不是整篇信息分析的 其语法格式为 cut [-bn] [file] 或 cut [-c][file] 或 cut [-df] [file]使用说明:
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定file参数cut命令将读取标准输入必须指定-b-c或-f标志之一。
主要参数:
-b以字节为单位进行分割。这些字节位置将忽略多字节字符边界除非也指定了-n标志。
-c以字符为单位进行分割
-d自定义分割符默认为制表符。
-f与-d一起使用指定显示哪个区域
-n取消分割多字节字符。仅和-b标志一起使用。如果字符的最后一个字节落在由-b标志的List参数指示的br/范围内改字符将被写出否则改字符将排除。cut 一般以什么为依据呢也就是说我怎么告诉cut我想定位到剪切内容呢
cut 命令主要是接收三个定位方法
第一 字节bytes用选项-b
第二 字符characters用选项-c
第三 域fields用选项-f以 “字节” 定位 1 执行 who 输出内容如下 2 提取每行第4个字符 who | cut -b 43 提取每行1-4个字符和第10个字符可以这样写-b 支持1-4的写法 who | cut -b 1-4,10但有一点要注意cut命令如果使用了-b选项那么执行此命令时cut会先把-b后面所有的定位进行从小到大排序然后再提取。可不能颠倒定位的顺序哦。这个例子就可以说明这个问题 who | cut -b 10,1-4#已经自动做了排序
4 省略截取范围的小技巧
提取每行1-4个字符可以写出 -4 默认是重1开始
who | cut -b -4提取每行从第5个字符后面的所有字符可以写成 5-
who | cut -b 5-如果是写出 -1,1- 这样的形式代表的是以整行 数字可以是任意。
who | cut -b -1,1-以字符为定位标志的例子 这个尝试一下用字节来截取看看 cut -b 3 cut_ch.txt#这里没有输出及时输出了也是乱码原因是一个中文占4个字节使用1-4可以输出第一个文字 cut -b 1-4 cut_ch.txt使用字符来截取第3个文字 cut -c 3 cut_ch.txt#使用字符的方式就可以成功截取了 字符可以正常处理字节也可以处理字符 可以使用 -nb 来处理字符-n 用于告诉cut不要将多字节字符拆开个人认为其实 -nb 就等于 -c 因为字符可以处理字节也可以处理字符
cut -nb 1-4 cut_ch.txt域下面来解释一下域
为什么会有“域”的提取呢因为刚才提到的-b和-c只能在固定格式的文档中提取信息而对于非固定格式的信息则束手无策。这时候“域”就派上用场了。如果你观察过/etc/passwd文件你会发现它并不像who的输出信息那样具有固定格式而是比较零散的排放。但是冒号在这个文件的每一行中都起到了非常重要的作用冒号用来隔开每一个项。
我们很幸运cut命令提供了这样的提取方式具体的说就是设置“间隔符”再设置“提取第几个域”就OK了
以/etc/passwd的前五行内容为例
cat /etc/passwd | head -5 | cut -d : -f 1#这个解释一下参数-d 是用来设置间隔符-f 是设置我要取的域。
在设定-f时也可以使用例如3-5或者4- 类似的格式
cat /etc/passwd|head -n 5|cut -d : -f 1,3-5cat /etc/passwd|head -n 5|cut -d : -f 1,3-5,7cat /etc/passwd|head -n 5|cut -d : -f -2如果遇到制表符和空格如何分辨。 有时候制表符确实很难分辨有一个办法可以看出一段空格到底是由若干个空格组的还是由一个制表符组成的。 sed -n l tab_space.txt **#如果是制表符tab那么会显示为\t 符号如果是空格就会原样显示,通过此方法即可以判断制表符和空格了。
如果你设定一个空格位间隔符那么可以这样写
cat tab_space.txt |cut -d -f 1#第一行都是tab
cut 的缺陷和不足
在处理多空格时如果文件里面的某些域是由若干个空格来间隔的那么用cut就有点麻烦了因为cut只擅长处理“以一个字符间隔”的文本内容