解决方法分为如下三步:
(1) 使用“tr”命令将制表符转换为空格;
(2) 使用“tr”命令将多个重复空格删除,保留一个空格;
(3) 使用“cut”命令进行域分割,输出正确结果。
1 检测分隔符
cat file | sed -n l #或者cat -A file
上面显示内容中,对于空格仍然按照原样显示,出现多处空白的就表示多个空格字符。
制表符Tab则显示为“ ”,出现多个“ ”就表示多个制表符在一起。(cat -A命令中、 变为^I)
可以看出该文件中既有多个空格连在一起,也有多个制表符连在一起。
2 去除重复的空格字符
去重是使用“tr”命令,使用-s选项,命令为“tr -s " "”。
使用该命令对转换制表符为空格后的输出结果进行去除重复空格字符(只保留一个空格字符),其完整命令和输出如下所示:
cat file | tr " " " " | tr -s " "
3 单词分割
使用命令cut的域分割进行单词的分割切分,例如需要提取分割每行的第一个单词,其命令为
“cut -d ' ' -f 1”
总结: cat file | tr ' ' ' ' | tr -s ' ' | cut -d ' ' -f 1,3