ITPub博客

首页 > > > Linux命令学习手册-cut

Linux命令学习手册-cut

作者:vaqeteart 时间:2020-03-24 13:56:49 0 删除 编辑



`cut -b list [-n] [file ...]`

`cut -c list [file ...]`

`cut -f list [-d delim][-s][file ...]`

# 功能

`cut` 命令用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出。

# 举例

假设查看的文件内容如下:

$cat passwd_cut
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
aaaaaaaaaaaaaa
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync

## 截取文件 `passwd_cut` 每行从第2到第3个字符共2个字符:

$cut -c 2-3 passwd_cut

输入之后,输出如下:

oo
ae
in
aa
ys
yn

这里,如果截取第3个字符则用 `cut -c 3 passwd_cut` , `-b` 和 `-c` 选项用法一样,不过是按字节截取。

## 截取文件 `passwd_cut` 每行第2到3个字段,字段以 `:` 做分割符:

$cut -f 2-3 -d':' passwd_cut

输入之后,输出如下:

x:0
x:1
x:2
aaaaaaaaaaaaaa
x:3
x:4

这里,如果不用 `-d` 指定分隔符号,那么默认分隔符号是 `[Tab]` 键,如果行内没有分隔符号,那么原封不动把这一行打印出来,如果行内有多个连续的该分隔符号,需要好好想想,如果多个-d应该以最后一个为准,我实践过。

## 截取文件 `passwd_cut` 每行第2到3个字段,字段分隔符 `:` ,不含分隔符的行不打印:

$cut -f2-3 -d':' -s passwd_cut

输入之后,输出如下:

x:0
x:1
x:2
x:3
x:4

这里,另外注意 `-f` 后面有无空格都一样。

## 截取文件 `passwd_cut` 每行第2个字段(含第二个字段)之前的内容,分隔符为 `:`:

$cut -f-2 -d':' -s passwd_cut

输入之后,输出如下:

root:x
daemon:x
bin:x
sys:x
sync:x

这里,需要注意的是 `-c,-b,-f` 选项表示第几个,这都是以1做为开始而不是0。

## 截取文件 `passwd_cut` 每行第2个字段(含第二个字段)之后的内容,分隔符为 `:`:

$cut -f2- -d':' -s passwd_cut

输入之后,输出如下:

x:0:0:root:/root:/bin/bash
x:1:1:daemon:/usr/sbin:/bin/sh
x:2:2:bin:/bin:/bin/sh
x:3:3:sys:/dev:/bin/sh
x:4:65534:sync:/bin:/bin/sync

这里,同样利用了 `-s` 选项,使得不含分隔符号的行不打印出来。

## 截取 `passwd_cut` 每行第2个字段(含第二个字段)之后内容,分隔符 `:`,截取后用 `!` 填充在每项之间:

$cut -f2- -d':' --output-delimiter='!' passwd_cut

输入之后,输出如下:

x!0!0!root!/root!/bin/bash
x!1!1!daemon!/usr/sbin!/bin/sh
x!2!2!bin!/bin!/bin/sh
aaaaaaaaaaaaaa
x!3!3!sys!/dev!/bin/sh
x!4!65534!sync!/bin!/bin/sync

这里,输出的时候把分隔符号替代为 `!` 。

## 截取 `passwd_cut` 每行第2-5个字段(含第2、5个字段)之外内容,并输出,分隔符 =:=:

$cut -f2-5 -d':' --complement passwd_cut

输入之后,输出如下:

root:/root:/bin/bash
daemon:/usr/sbin:/bin/sh
bin:/bin:/bin/sh
aaaaaaaaaaaaaa
sys:/dev:/bin/sh
sync:/bin:/bin/sync

这里,利用了 `--complement` 选项来截取获得指定之外的内容。

# 描述

\*cut主要有5个参数,

- **`-c`:** "character"截取方式
- **`-b`:** "byte"截取方式
- **`-f`:** "field"截取方式
- **`-d`:** 当采用field模式截取时,需要用此参数指定一个分隔符,分割符只能为单个字符。
- **`-s`:** suppress,表示如果行中不含给出的分割符则不输出该行(默认如果没有则将该行原封不动输出)

\*最开始命令格式中的list表示在行内的对三种方式(-c,-b,-f)取的范围表示如下:

- **N:** 只有第N项
- **N-:** 从第N项一直到行尾
- **N-M:** 从第N项到第M项(包括M)
- **-M:** 从一行的开始到第M项(包括M)
- **-:** 从一行的开始到结束的所有项

如果命令执行成功则返回0,遇到错误则返回一个大于0的数字。

# 其他

可以参考 `man` ,实际基本上也都没有什么了。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9525959/viewspace-3128820/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
软件开发者,擅长嵌入式Linux软件开发、Linux系统操作、时间管理、其它。

注册时间:2009-03-17

  • 博文量
    60
  • 访问量
    12561