cut命令可通过字符位置或分隔符提取文本特定列。按字符位置提取时,用cut -c指定起始和结束位置,如cut -c5-10提取第5到第10个字符;也可单独提取某位置如cut -c10。按分隔符提取时,用-d指定分隔符,-f指定字段编号,如cut -d: -f1,7提取冒号分隔的第1和第7字段。处理不规则分隔符时,可先用tr压缩空格再配合cut。cut常与其他命令组合使用,如结合ps、grep提取进程pid,或提取csv文件第二列数据。掌握这些技巧能高效处理日志、系统信息等结构化文本。
提取linux特定列数据,
cut
命令是个简单但非常实用的工具。如果你经常处理日志、csv文件或者系统输出信息,掌握
cut
的基本用法和字段分割技巧,能帮你快速获取所需数据,节省不少时间。
按字段位置提取:指定起始和结束位置
cut
最基础的用法是按字符位置来截取内容。比如你想从每行文本中提取第5到第10个字符,可以这样写:
cut -c5-10 filename
这个方法适合格式固定的数据,比如某些日志文件的时间戳部分。如果你只想看某一行的前几个字符,也可以结合
-c1-4
这样的参数使用。
注意:字符计数是从1开始的,不是从0开始。
常见操作:
-
cut -c10
只提取第10个字符
-
cut -c5-
从第5个字符开始一直到最后
-
cut -c-5
提取前5个字符
按分隔符切割:提取特定字段
更常见的场景是按分隔符(如冒号、逗号、空格)来切分字段,然后提取你需要的那一列。这时候要用到
-d
指定分隔符,用
-f
指定字段编号。
例如查看系统用户列表并提取用户名和登录shell:
cut -d: -f1,7 /etc/passwd
这条命令的意思是:以冒号为分隔符,提取第1和第7个字段。输出的结果就是用户名和对应的shell程序路径。
小提示:如果字段编号超出了实际存在的数量,
cut不会报错,只是显示为空。
处理不规则分隔符:空格和制表符的处理技巧
有些时候字段之间的分隔符并不统一,比如既有多个空格,也可能夹杂着Tab。这种情况下使用默认的空白分隔可能不太准确。
你可以先用
tr
把多个空格压缩成一个,再配合
cut
使用:
cat data.txt | tr -s ' ' | cut -d' ' -f3
上面的例子会先将连续的空格合并成一个,然后再按空格提取第三个字段。这种方法在处理命令行输出时很常见,比如查看内存使用情况并提取可用内存值。
实际应用小技巧:配合其他命令组合使用
cut
本身功能有限,但它和其他命令搭配使用就能发挥更大作用。比如查看当前运行的进程并提取PID:
ps aux | grep nginx | grep -v grep | cut -c10-15
这里我们先用
ps
列出所有进程,过滤出nginx相关的,去掉grep本身的进程,最后用
cut
提取PID所在的字符区域。
另一个常用组合是提取CSV文件中的某一列:
cut -d, -f2 data.csv
假设你的CSV第二列是邮箱地址,这条命令就可以快速提取所有邮箱。
总的来说,
cut
虽然简单,但在处理结构化文本时非常高效。只要注意分隔符是否一致、字段编号是否正确,基本上就这些技巧就够用了。