cut命令
cut 命令对指定文件的内容的每一行进行截断,并将截断后的所有内容(或部分内容)输出到标准输出。
usage: cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-s] [-d delim] [file ...]
如果不指定 File,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
参数:
- -b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
- -c :以字符为单位进行分割。
- -d :自定义分隔符,默认为制表符。
- -f :与-d一起使用,指定显示哪个区域。
- -n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的 范围之内,该字符将被写出;否则,该字符将被排除
-b
参数 - 按字节分割
注意:一个空格算一个字节,一个汉字算三个字节
$ date
2011年08月11日 星期四20:44:52 EDT
# 取前四个字节
$ date |cut -b 1-4
2011
$ date |cut -b 1-6
2011
# 一个汉字算三个字节
$ date |cut -b 1-7
2011年
$ date |cut -b 1-10
2011年08
-c
参数 - 按字符分割
按字符cut相对比较简单,中文字符和空格都算一个字符。
$ date |cut -c 1-5
2011年
$ date |cut -c 5,9,13
年月日
-d
和 -f
配合使用 - 指定列分隔符,按列分割
其中,-d指定列分隔符,-f 指定要剪出哪几个列(以每行作为一个单元进行切割),
-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,就可以省略 -d 选项,而直接用 -f 来指定需要将哪一部分列输出到标准输出(通过提供域的序号,索引从1开始):
$ cat 1
data11 data12 data13
data21 data22 data22
data31 data32 data33
# 输出每行的列 1 内容(分隔符为“ ”)
$ cat 1 | cut -d " " -f 1
data11
data21
data31
# 输出每行的列 1 和列 2 的内容(分隔符为“ ”)
cat 1 | cut -d " " -f 1,2
data11 data12
data21 data22
data31 data32
FEATURED TAGS
algorithm
algorithmproblem
architecturalpattern
architecture
aws
c#
cachesystem
codis
compile
concurrentcontrol
database
dataformat
datastructure
debug
design
designpattern
distributedsystem
django
docker
domain
engineering
freebsd
git
golang
grafana
hackintosh
hadoop
hardware
hexo
http
hugo
ios
iot
java
javaee
javascript
kafka
kubernetes
linux
linuxcommand
linuxio
lock
macos
markdown
microservices
mysql
nas
network
networkprogramming
nginx
node.js
npm
oop
openwrt
operatingsystem
padavan
performance
programming
prometheus
protobuf
python
redis
router
security
shell
software testing
spring
sql
systemdesign
truenas
ubuntu
vmware
vpn
windows
wmware
wordpress
xml
zookeeper