tongsiying

阅读|运动|自律

0%

cut

前言

Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。

1. 命令格式

1
2
3
cut [选项] 文件
cat 文件 | cut [选项]
可以看到,cut命令既可以用文件作为参数也可以接受标准输入

2. 命令功能

1
2
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

3. 命令参数

1
2
3
4
5
6
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除

4.范例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
实例一:
cat b.txt
abc
abcd
cat b.txt | cut -c 1
a
a
cat b.txt | cut -c 2
b
b
cat b.txt | cut -c 1-2
ab
ab
cat b.txt | cut -c 1-3
abc
abc
cat b.txt | cut -c 1-4
abc
abcd
cat b.txt | cut -c 1-5
abc
abcd
cat b.txt | cut -c 1-6
abc
abcd

实例二:
1.按字符截取:(源字串:123:456:789)
截取第三个字符:
echo 123:456:789 | cut -c3
3

截取第三到第六之间的字符:
echo 123:456:789 | cut -c3-6
3:45

截取前三个字符
echo 123:456:789 | cut -c-3
123

提取第三个及其后面的所有字符
echo 123:456:789 | cut -c3-
3:456:789

提取第三到第六和第八到第十间的字符
echo 123:456:789 | cut -c3-6,8-10
3:45:78

5.小结

这个”-“比较有意思:

1
2
3
在inx前,表示从字串头开始;
放在inx后,表示从idx开始到字串末尾;
在两个idx之间,表示从idx1到idx2;

还有这个”,”可以连接我们选择的不连续的域:

1
2
3
比如要取第1,3,5,7个字符: 
echo 123:456:789 | cut -c1,3,5,7
1346

-b和-c:

1
2
对于-b选项应该和-c选项差不多吧,就是单位不同而已
(我没有像上面一样测试,只是我的理解)

-d和-f:

1
2
3
4
5
对于-d选项需要配合着-f选项使用;
-d是用来指定分隔符;
-f用来指定提取第几个域的内容;
echo 123:456:789 | cut -d : -f 3
789

引用:
https://www.jb51.net/article/159083.htm
https://www.cnblogs.com/chenxiaomeng/p/10066821.html

赞赏一下吧~