技术与生活 / 一篇记录
cut 适合拆字段,但它不是 CSV 解析器
分隔符固定且不存在转义时,cut 能快速抽取文本列。
对于固定分隔符的简单文本,cut 的优势是规则直接、输出容易接入下一条命令。一旦字段内部也允许出现分隔符,按字符切分就无法恢复原来的结构。
从一个例子看起
以下示例面向常见 GNU/Linux 环境,文件名为实验用占位名称。
printf 'name:alice\n' | cut -d: -f2
输出应为 alice,随后测试缺少分隔符的输入。
排查时再往前走一步
测试正常行、缺少字段和带额外分隔符的行。如果输入允许引号、转义或多行字段,及时改用格式专用解析器,比不断追加补丁更可靠。
对于缺少目标列的输入,要决定是跳过、报错还是保留原行。cut 的默认行为不一定符合业务预期。先用少量异常样本固定规则,能避免批量处理结束后才发现字段错位。
CSV 中的引号与内嵌逗号需要专用解析器处理。
参考:Linux 文档。