字符串截取 cut:字段提取命令
cut:字段提取命令
语法格式:cut [参数] [文件]
常用参数
参数 | 作用 |
---|---|
-b | 以字节为单位进行分割 ,仅显示行中指定直接范围的内容 |
-c | 以字符为单位进行分割 , 仅显示行中指定范围的字符 |
-d | 自定义分隔符,分割列 ,默认为制表符”TAB” |
-f | 提取第几列 , 与-d一起使用 |
-n | 取消分割多字节字符 |
- -complement | 补足被选择的字节、字符或字段 就是取反的意思。例如本来提取第二列,加上这个参数就是不要第二列 |
示例文本内容:
# 分隔符为空格
[userwin@MiWiFi-R3L-srv learn]$ vim student.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
# 分隔符为tab
[userwin@MiWiFi-R3L-srv learn]$ vim student1.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
-f 提取第几列
[userwin@MiWiFi-R3L-srv learn]$ cut -f2 student.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
[userwin@MiWiFi-R3L-srv learn]$ cut -f2 student1.txt
Name
tom
jack
alex
提取多列
# 截取第二列和第四列
[userwin@MiWiFi-R3L-srv learn]$ cut -f2,4 student1.txt
Name Percent
tom 91
jack 87
alex 98
cut 不是用来提取列的吗?为什么上面结果不一样呢?
使用cut在不指定分隔符时,默认分隔符为tab
-d 自定义分隔符
[userwin@MiWiFi-R3L-srv learn]$ cut -f2 -d" " student.txt
Name
tom
jack
alex
- -complement 补足被选择的字节、字符或字段 ;即取反
如愿以偿,第二列排除了
[userwin@MiWiFi-R3L-srv learn]$ cut -f2 --complement student1.txt
No Mark Percent
01 69 91
02 71 87
03 68 98
-b 以字节为单位进行分割 ,仅显示行中指定直接范围的内容
注意:-b 表示字节;-c 表示字符;-f 表示定义字段。
N- :从第 N 个字节、字符、字段到结尾; N-M :从第 N 个字节、字符、字段到第 M 个(包括 M 在内)字节、字符、段; -M :从第 1 个字节、字符、字段到第 M 个(包括 M 在内)字节、字符、字段。
[userwin@MiWiFi-R3L-srv learn]$ vim byte.txt
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
00000001111
# 截取第8列字节
[userwin@MiWiFi-R3L-srv learn]$ cut -b8 byte.txt
1
1
1
1
1
1
1
1
1
1
#截取1-8列字节
[userwin@MiWiFi-R3L-srv learn]$ cut -b1-8 byte.txt
00000001
00000001
00000001
00000001
00000001
00000001
00000001
00000001
00000001
00000001
# 截取7,8两列字节
[userwin@MiWiFi-R3L-srv learn]$ cut -b7-8 byte.txt
01
01
01
01
01
01
01
01
01
01
截取第7列到最后一列字符
[userwin@MiWiFi-R3L-srv learn]$ cut -b7- byte.txt
01111
01111
01111
01111
01111
01111
01111
01111
01111
01111
-c 以字符为单位进行分割 , 仅显示行中指定范围的字符
使用方法和-b 大致一致
[userwin@MiWiFi-R3L-srv learn]$ vim char.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
[userwin@MiWiFi-R3L-srv learn]$ cut -c2 char.txt
b
b
b
b
b
[userwin@MiWiFi-R3L-srv learn]$ cut -c2-5 char.txt
bcde
bcde
bcde
bcde
bcde
[userwin@MiWiFi-R3L-srv learn]$ cut -c8- char.txt
hijklmnopqrstuvwxyz
hijklmnopqrstuvwxyz
hijklmnopqrstuvwxyz
hijklmnopqrstuvwxyz
hijklmnopqrstuvwxyz