解决方法分为如下三步:

(1)        使用“tr”命令将制表符转换为空格;

(2)        使用“tr”命令将多个重复空格删除,保留一个空格;

(3)        使用“cut”命令进行域分割,输出正确结果。

1 检测分隔符

cat file | sed -n l  #或者cat -A file

上面显示内容中,对于空格仍然按照原样显示,出现多处空白的就表示多个空格字符。

制表符Tab则显示为“\t”,出现多个“\t”就表示多个制表符在一起。(cat -A命令中、\t变为^I)

可以看出该文件中既有多个空格连在一起,也有多个制表符连在一起。

2 去除重复的空格字符

去重是使用“tr”命令,使用-s选项,命令为“tr  -s  " "”。

使用该命令对转换制表符为空格后的输出结果进行去除重复空格字符(只保留一个空格字符),其完整命令和输出如下所示:

cat file | tr "\t" " " | tr -s " "

3 单词分割

使用命令cut的域分割进行单词的分割切分,例如需要提取分割每行的第一个单词,其命令为

cut  -d ' ' -f 1

总结: cat file | tr '\t' ' ' | tr -s ' ' | cut -d ' ' -f 1,3

12、多空格&多制表符文本之cut域分割终极方案的更多相关文章

  1. c程序设计语言_习题1-18_删除输入流中每一行末尾的空格和制表符,并删除完全是空格的行

    Write a program to remove all trailing blanks and tabs from each line of input, and to delete entire ...

  2. linux命令(44):sed,vim;去掉文件中的^M 符号,去掉行首空格和制表符

    注:下面的直接粘贴会出错,要重新输入^M 如何输入^M,先 ctrl+v,然后 ctrl+m 第一种方法: cat -A filename 就可以看到windows下的断元字符 ^M要去除他,最简单用 ...

  3. 关于StringUtils类isEmpty、isNotEmpty、isBlank、isNotBlank针对null、空字符串和空白字符(如空格、制表符)的区别

    isEmpty | null | 空字符串("")|空白字符(空格.制表符)| | isEmpty | true | true | false | | isNotEmpty | f ...

  4. js全局替换空格,制表符,换行符

    this.value = this.value.replace(/\s+/g,'') "/ "这个是固定写法, "\s"匹配任何不可见字符,包括空格.制表符.换 ...

  5. EditPlus 2:用空格替换制表符

    打开软件点击菜单栏上的Tools(工具),在点击perferences(外观),再点击左边栏的File->Setting & Syntax(文件->设置与符号),再点击右栏的Tab ...

  6. 如何在 UltraEdit 删除空行(含空格,制表符)

    如何在 UltraEdit 删除空行(含空格,制表符) 打开UltraEdit,ctrl+r弹出替换对话框,点选启用正则表达式方法1:在查找框输入 ^p^p:在替换框输入 ^p执行全部替换:这种方法是 ...

  7. THINKPHP 清除HTML注释、换行符、空格、制表符等

    thinkphp3.2 3.2中取消了配置文件中的 'TMPL_STRIP_SPACE' 属性,所以我们先来修改:\ThinkPHP\Library\Think\Template.class.php ...

  8. 阅读《Android 从入门到精通》(12)——自己主动完毕文本框

    自己主动完毕文本框(AutoCompleteTextView) java.lang.Object; android.view.View; android.view.TextView; android. ...

  9. 如何在markdown中实现缩进,空格,制表符

    参考 https://stackoverflow.com/questions/6046263/how-to-indent-a-few-lines-in-markdown-markup Markdown ...

随机推荐

  1. jenkins实现自动部署

    主机A搭建gitlab.gitlab下载:https://www.gitlab.cc/downloads/    (gitlab中文网) 主机B搭建jenkinsjenkins下载:https://j ...

  2. socket通信——通过Udp传输方式,将一段文字数据发送出去

    需求:通过Udp传输方式,将一段文字数据发送出去 定义一个Udp发送端 思路: 1.建立updsocket服务 2.提供数据,并将数据封装到数据包中. 3.通过socket服务的发送功能,将数据包发出 ...

  3. The Great Pan

                                             The Great Pan Time Limit:1000MS     Memory Limit:65536KB    ...

  4. thinkphp3.2新部署是错

    下载好thinkphp3.2,使用M或者D方法是,报FILE: tp\ThinkPHP\Library\Think\Db.class.php LINE: 42 可能的错误是,配置文件中没有配置数据库连 ...

  5. 手把手编写PHP框架 深入了解MVC运行流程

    1 什么是MVC MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller ...

  6. python-管理MySQL之ConfigParser模块

    1.拷贝2.7版本的ConfigParser.py模块支持无值解析 cp /usr/local/src/Python-2.7.5/Lib/ConfigParser.py /usr/lib/python ...

  7. Linux-NoSQL之Redis(二)

    一.Redis配置文件详解 1.通用配置 daemonize no  # 默认情况下,redis并不是以daemon形式来运行的.通过daemonize配置项可以控制redis的运行形式 pidfil ...

  8. Prototype Chain

    参考资料: <javascript权威指南 第六版> <javascript高级程序设计 第二版> 写在前面的话 所谓的原型链就是一个一个的对象通过其__proto__属性连接 ...

  9. ADO:连接,执行语句与关闭(sql server数据库)

    一,身份验证: sql server数据库连接身份验证有两种:windows身份验证和SQL Server身份验证 windows验证:是使用windows的安全子系统对用户连接进行有效性验证.(个人 ...

  10. web网页打印的方法(浏览器通用)

    Web打印组件jatoolsPrinter 应用web化,不论对开发商,还是对用户来说,实在是一种很经济的选择,因为基于 web的应用,客户端的规则很简单,容易学习,容易维护,容易发布.但对程序员来说 ...