如何使用UNIX cut命令排除文本文件中的指定列
实现cut反向功能(排除指定列)的替代方案
因为你的bash环境不支持cut --complement参数,下面是几个可行的替代方法:
1. 用awk直接提取目标列
awk处理文本列非常灵活,直接指定分隔符后输出需要的列就行:
awk -F', ' '{print $1 " , " $3}' your_file.txt
-F', ':把逗号加空格设成分隔符,刚好匹配你文件里的列分隔格式$1是第一列(比如"1"),$3是第三列(比如"animal")- 用
" , "连接两列,保证输出格式和你要的一致
2. 用sed正则删除第二列
通过正则精准匹配并去掉第二列的内容:
sed 's/, "[^"]*" , /, /' your_file.txt
- 正则
, "[^"]*" ,会匹配每行里第二列的完整部分(比如, "cat" ,) - 把匹配到的内容替换成
,,直接去掉第二列同时保留格式
3. cut+paste拼接列(适合偏好cut工具的场景)
如果一定要用cut,可以分别提取需要的列再拼起来:
paste -d' , ' <(cut -d',' -f1 your_file.txt | sed 's/ $//') <(cut -d',' -f3 your_file.txt | sed 's/^ //')
- 先分别用
cut提取第1、3列,再用sed去掉列前后的多余空格 - 最后用
paste把两列用指定分隔符拼起来
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

