执行cat、grep、cut组合命令报错,需提取文件第三列路径
解决方法
方案1:用awk一步完成(推荐)
直接匹配第二列为jane的行并输出第三列路径,命令简洁且适配各种空格格式:
awk '$2 == "jane" {print $3}' list.txt
执行后输出结果:
/data/jane_profile_07272018.doc /data/jane_pic_07282018.jpg /data/jane_contact_07292018.csv
方案2:修复原管道命令
原命令报错是因为grep ' jane '依赖前后空格的匹配逻辑,若行内存在连续空格,会导致cut无法正确识别字段。调整grep匹配规则即可解决:
grep -w jane list.txt | cut -d ' ' -f 3
-w参数让grep匹配完整单词jane,避免误匹配janez,确保cut能准确提取第三列。
错误原因说明
cut: you must specify a list of bytes, characters, or fields错误,本质是cut无法从上游输入中识别有效字段。要么是grep输出的行格式异常,要么是-d ' '仅识别单个空格,若行内有连续空格就会拆分出空字段,导致cut无法解析。而awk默认将任意连续空格、制表符作为分隔符,更适合处理这类结构化列文本。
内容的提问来源于stack exchange,提问作者laughing
相关产品推荐
相关产品推荐

