Linux cut命令怎么使用

嘿,我们来谈谈Linux中的cut命令。
对我来说,这个东西简直就是文字处理的产物。
其实我第一次接触它的时候也很困惑,但是用久了之后我发现它还蛮有趣的。

首先你必须了解cut的基本用法。
它看起来像这样:剪切[选项][文件]。
如果未指定文件,则默认从标准输入读取数据,例如通过管道传递的内容。

接下来我们看一下常用的选项:

-b 按字节分割,提取指定位置的字节。
例如,如果您想提取每行的第三个字节,您可以使用 who|cut -b3 ,输出可能是像 c 这样的字符。
但请注意,如果是多字节字符,例如中文UTF-8 ,则可能会被截断。
在这种情况下,必须使用-n选项以避免出现乱码。


-c 按字符分割并提取指定位置的字符。
建议将其用于多语言文本处理。
例如,如果要提取字符串“Hello”中的第二个字符,可以使用 echo "Hello"|cut -c2 ,输出将为“OK”。


-d 自定义分隔符,与 -f 一起使用。
默认分隔符是制表符。
例如,如果要从字符串“a:b:c”中提取第二个字段,可以使用 echo "a:b:c"|cut -d':' -f2 ,输出将为 b。


-f 提取字段,根据分隔符提取指定字段。
例如,如果要从 ps 命令的输出中提取进程所有者,可以使用 psaux|cut -d' ' -f1

-n取消多字节分割,仅与-b配合使用,以保证多字节字符不被截断。

如果组合使用,切割会更有趣。
例如,如果要从日志文件中提取日期字段,假设分隔符是逗号,则可以使用 cat log.csv|cut -d',' -f3
但是,使用裁剪功能时需要记住以下几点:
1 您必须指定 -b、-c 或 -f 之一。
2 . 字段编号从 1 开始,范围可以是 N-M(例如 2 -5 )或逗号分隔的列表(例如 1 ,3 )。
3 、如果遇到复杂的分解情况,首先应该使用awk或者sed进行预处理。

总之,cut命令虽然很简单,但是功能强大,可以有效处理结构化文本数据。
我以前处理过很多这样的情况,比如从服务器日志中提取特定信息,这个命令使它变得更容易。

Linux下tail命令的使用方法。

这就是坑。
别相信。
不要这样做。

cut命令的-complement选项如何使用?

老实说,参数的顺序是我在使用 cut 命令时经常遇到的一个陷阱。
如果你仔细想想,很容易对如何在命令行中输入参数和文件名感到困惑。
我刚开始学习的时候就犯了一个错误,把文件名放在了前面。
然后系统报告找不到该文件。
我当时很困惑。
经过很长时间的检查,发现参数的顺序是错误的。

以学生证文件为例。
假设该文件名为 Students.txt 并且包含逗号分隔的字段。
如果你想提取姓名字段,只需使用“cut -f2 Students.txt”。
但如果修改文件,字段之间用制表符分隔,则需要更改参数来剪切-f2 -d"\t" Students.txt。
这个任务看起来很简单,但真正落实到的时候,有时候还是需要快速调整。

有趣的是,cut 命令的 -c 和 -f 参数有时很容易混淆。
例如,如果您有一个日志文件,想要提取第 5 到 1 0 个字符,只需使用 cut -c5 -1 0 log.txt。
但是,如果要提取字段2 、4 和6 ,则需要使用cut -f2 ,4 ,6 log.txt。
这两种用途看起来很相似,但操作起来却是完全不同的东西。
当时我不明白为什么会有这样的区别。
后来翻了一下手册,发现字节和字段的概念根本不具有相同的维度。

说到这里,不得不提一个具体的案例。
有一次我正在处理 CSV 文件。
这些字段用引号括起来,包含中文名称和英文注释。
如果直接使用cut -f2 Students.csv,得到的Name字段完全是乱码。
后来我了解到,我必须首先使用 awk 命令处理它,删除引号,然后使用“cut”提取字段。
你看,有时候Cut不能单独使用,必须与其他命令配合使用。

我个人认为cut命令的精髓在于参数的灵活组合。
例如,如果要获取第二个字段并限制字节范围,可以使用 cut -f2 -b1 0-2 0 Students.txt。
我越用这个组合,就越觉得它有趣。
尽管如此,初学者还是很容易记住如此复杂的参数组合。
通过反复练习,我逐渐掌握了这一系列的操作。

我自己没有这样做过,但我听说 cut 命令也可以与管道一起使用,直接从其他命令的输出中提取数据。
示例:ls -l | cut -f5 可以直接从文件列表中获取文件名。
我觉得这个用法挺高级的,但是对我来说还是太复杂了,得慢慢学。
我记得日期是 X 左右,但我建议您检查 cut 命令的版本兼容性。
不同的 Linux 发行版可能略有差异。