cut命令将行按指定的分隔符分割成多列。它的弱点在于不好处理多个分隔符重复的情况,因此经常结合tr的压缩功能。
注意:cut分隔符必须是单个字符
cut命令的常用选项
-b:按字节筛选;
-n:与"-b"选项连用,表示禁止将字节分割开来操作;
-c:按字符筛选;
-f:按字段筛选;
-d:指定字段分隔符,不写-d时的默认字段分隔符为"TAB";因此只能和"-f"选项一起使用。
-s:避免打印不包含分隔符的行;
--complement:输出不符合要求的列(补集)
--output-delimiter:指定输出分割符;默认为输入分隔符。
cut命令的简单案例
fie.txt
1 2 3 a b c x,y,z
备注:第一列和第二列隔了2个空格,第二列和第三列隔了3个空格。
1、按字段筛选。输出第一列和第三列
执行:cut -f1,3 -d ‘ ‘ file.txt
输出:1 2
a b
x,y,z
遇到的问题:cut把2个空格当做了2个字符,输出第一列和第三列时,把第二个空格当做了第二列,导致实际情况和预计情况不符。
解决方法:使用tr命令压缩连续字符
执行:cat file.txt | tr -s " " | cut -d ‘ ‘ -f1,3
输出:1 3
a c
x,y,z
还有一个问题:x,y,z 不符合格式规范,怎么也输出了。
解决方法:使用-s选项。 -s:避免打印不包含分隔符的行。
执行:cat file.txt | tr -s " " | cut -d ‘ ‘ -f1,3 -s
输出:1 3
a c
2、输出第一列和第三列外的所有列。
执行:cat file.txt | tr -s " " | cut -d ‘ ‘ -f1,3 -s --complement
输出:2
b
3、
未完待续......
原文:https://www.cnblogs.com/lfjn/p/11401277.html