文章目录
- Cut 命令和语法
- 指定分隔符
- 以字符的方式提取内容
- 根据字节提取字符
上篇文章:嵌入式开发 Linux 常用命令系列 5 – history 与 “!“ 巧妙配合
Cut 命令和语法
cut 命令的基本语法如下:
$ cut OPTION... [FILE]...
cut 的一些选项如下,cut 命令必须要指定选项才能执行。
-f
: 提取指定的字段,cut 命令使用 Tab 作为默认的分隔符。
-d
: Tab 是默认的分隔符,使用这一选项可以指定自己的分隔符。
-b
: 提取指定的字节,也可以指定一个范围。
-c
: 提取指定的字符,可以是以逗号分隔的数字的列表,也可以是以连字符分隔的数字的范围。
–complement
: 补充选中的部分,即反选。
–output-delimiter
: 修改输出时使用的分隔符。
--only-delimited
: 不输出不包含分隔符的列。
我们以如下 date
命令为例来进行说明。
[05:31:24]sam (*^~^*) ~> date
2023年 07月 19日 星期三 17:31:26 CST
指定分隔符
最常用的选项是 -d
和 -f
的组合,这会根据 -d
指定的分隔符和 -f
列出的字段来提取内容。
例如在这个例子中只打印出date
的第一个字段,用的分隔符是空格。
[05:31:26]sam (*^~^*) ~> date | cut -d' ' -f1
2023年
在下面这个例子中我们提取了多个字段。这里,我们使用空格( )分隔符从date
提取第1和第6个字段。
[05:33:30]sam (*^~^*) ~> date | cut -d' ' -f1,6
2023年 CST
要显示字段的某个范围,可以指定开始和结束的字段,中间用连字符(-)连接,如下所示:
[05:36:30]sam (*^~^*) ~> date | cut -d' ' -f5-6
17:36:34 CST
在代码debug的过程中,可能需要经常重新编译代码, 那么如何确认编译已经生效了呢?
可以通过下面方法:
echo "#define TIMESTAMPLE \"`date | cut -d' ' -f5-6`\"" > timestamp.h
cat timestamp.h
#define TIMESTAMPLE "17:18:45 CST"
在需要debug的 文件添加 timestamp.h
头文件,然后加上 print语句,如下:
#include "timestamp.h"printf(TIMESTAMP);
要补全选择输出的字段(即反选),使用 --complement 选项。这一选项输出所有的字段,除了指定的字段。
[05:41:27]sam (*^~^*) ~> date | cut -d' ' --complement -f5-6
2023年 07月 19日 星期三
以字符的方式提取内容
-c
选项可以用来根据字符位置进行提取,注意空格和Tab也以字符来处理。
打印 date
命令的第1个字符,如下:
[05:44:50]sam (*^~^*) ~> date | cut -c 1
2
根据字节提取字符
使用-b
选项通过指定字节的位置来选择一行的某一部分,使用逗号分隔每个指定位置,或用连字符 -
指定一个范围。
下面这个例子提取 date
命令的第1,2,3个字节:
[05:41:47]sam (*^~^*) ~> date | cut -b 1,2,3
202
上篇文章:嵌入式开发 Linux 常用命令系列 5 – history 与 “!“ 巧妙配合