Linux cut命令:用于按列提取文件内容

cut命令是从文件中的每一行中截取出一些部分,并输出到标准输出中。

cut命令从一行字符串中以字节,字符,字段截取一部分内容出来

主要两大功能:

显示文件内容

连接多个或多个文件

1、功能说明

用于按列提取文件内容

2、语法格式

cut [选项][文件]
文件:指定要进行内容过滤的文件

3、选项解释

  • -b 以字节为单位进行分割
  • -n 取消分割多字节字符,与选项
  • -b一起使用
  • -c 以字符为单位进行分割
  • -d 自定义分隔符,默认为制表符”TAB”
  • -f 显示指定字段的内容,与-d一起使用
  • N 第N个字节、字符或字段
  • N- 从第N个字节、字符或字段开始直至行尾
  • N-M 从第N到第M(含M)个字节、字符或字段
  • -M 从第1到第M(含M)个字节、字符或字段

4、参考实例

以字节为单位进行分割

准备数据:把$PATH中的数据追加到cut.txt
[root@bunian ~]$ echo $PATH
/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
[root@bunian ~]$ echo $PATH > cut.txt

## 输出cut.txt中第4个字节
[root@bunian ~]$ cut -b 4 cut.txt
t

## 输出cut.txt指定范围内的字节
[root@bunian ~]$ cut -b 4-6 cut.txt
t/h

## 输出cut.txt指定多个范围内的字节,多个逗号隔开
[root@bunian ~]$ cut -b 4-6,7-10 cut.txt
t/homeb
[root@bunian ~]$ cut -b 4-6,9 cut.txt
t/he

## '-'在数字前和后的区别
[root@bunian ~]$ cut -b -4 cut.txt
/opt
[root@bunian ~]$ cut -b 4- cut.txt
t/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
结论:
  -4表示从第一个字节到第4个字节
  4-表示从第4个字节到行尾

以字符为单位进行分割

## 输出cut.txt中第4个字节
[root@bunian ~]$ cut -c 4 cut.txt
t

## 输出cut.txt指定范围内的字节
[root@bunian ~]$ cut -c 4-6 cut.txt
t/h

## 输出cut.txt指定多个范围内的字节,多个逗号隔开
[root@bunian ~]$ cut -c 4-6,7-10 cut.txt
t/homeb
[root@bunian ~]$ cut -c 4-6,9 cut.txt
t/he

细心的朋友会发现,上述-b和-c输出都是一样的,那是为什么呢?
因为字母是单字节字符,换成中文就看出区别了

[root@bunian ~]$ echo 'I am chinese 我是中国人' > cut2.txt
[root@bunian ~]$ cut -c 4-16 cut2.txt
m chinese 我是中
[root@bunian ~]$ cut -b 4-16 cut2.txt
m chinese 我

自定义分割符

对上述cut.txt中的数据按":"分区域,分区标注如下:
图片[1]-Linux cut命令:用于按列提取文件内容-不念博客
// 从cut.txt找出第个4路径。
[root@bunian ~]$ cut -d ':' -f 4 cut.txt
/bin

// 从cut.txt找出第2和第4个路径。
[root@bunian ~]$ cut -d ':' -f 2,4 cut.txt
/usr/local/bin:/bin

// 从cut.txt找出第三到最后一个路径。
[root@bunian ~]$ cut -d ':' -f 3- cut.txt
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin

// 从cut.txt找出第一到第三个路径
[root@bunian ~]$ cut -d ':' -f 1-3 cut.txt
/opt/homebrew/bin:/usr/local/bin:/usr/bin 

// 从cut.txt找出第一到第三,还有第五个路径
[root@bunian ~]$ cut -d ':' -f 1-3,5 cut.txt
/opt/homebrew/bin:/usr/local/bin:/usr/bin:/usr/sbin

// 显示/etc/passwd的用户和shell
[root@bunian ~]$ cat /etc/passwd | cut -d ':' -f 1,7
nobody:/usr/bin/false
root:/bin/sh
daemon:/usr/bin/false
_uucp:/usr/sbin/uucico
...
© 版权声明
THE END