[join命令可以通过-t $'t'来把分隔符设为tab字符]

默认情况下,Linux/BSD下的join命令以空格为分隔符。即使你的输入文件是以tab为分隔符的,输出文件也会变成以一个空格为分隔的文件。假如你的数据中存在有空格的字符串,输出结果就会变得混乱,比如:

file1.txt

a        hello

b        join me

file2.txt

a        a b c

b        file

这样的两个文件用命令“join file1.txt join file2.txt”合并后会变成

a hello a b c

b join me file

这样就会难以确定第二列的内容,造成混乱。

考虑到这一点,需要用join的一个参数来确定分隔符,即-t,但是从直觉上的几种使用方法都是不对的,比如

join -t "t" file1.txt file2.txt

join -t"t" file1.txt file2.txt

join -t 't' file1.txt file2.txt

join -t't' file1.txt file2.txt

这样使用会报错,“join: multi-character tab '\t'”(Linux), 或“join: illegal tab character specification” (BSD)。

事实上,这里是因为bash不会把"t"解读为tab键,而把它看成是两个字符——反斜线和t。我同时测试了cut命令,反应与join命令是一样的。

当然,这个问题不会无解,只是我们没有使用正确的用法,正确的用法是用$''来包括t,也就是

join -t $'t' file1.txt file2.txt

双引号是不行的。这说明bash需要的特定的方法来解读反义字符。

这里有一点疑问,就是为什么join 和 cut 之类的命令只支持单字符的分隔符,而且为什么不做一个快捷方式,能够直接解读"t"为tab符号。我想这可能是由于历史原因,或着速度的考量吧,不得而知。

参考资料:

http://stackoverflow.com/questions/8849681/bash-join-command

转载本文请联系原作者获取授权,同时请注明本文来自李雷廷科学网博客。

链接地址:http://blog.sciencenet.cn/blog-656335-918386.html

上一篇:在github中删除已经同步过的commit

下一篇:科学网检测移动设备漏洞

linux bsd命令,科学网—Linux/BSD下join命令使数据以tab为分隔符的方法 - 李雷廷的博文...相关推荐

  1. linux编译blas,科学网—Linux下安装blas和lapack包小记 - 徐博伦的博文

    系统是centOS6.5,机器上已有gfortran编译器 从网上搜索下载blas.cblas.lapack的tar压缩文件包 1.编译blas 先解压文件 tar xvf blas.tgz cd b ...

  2. nvidia显卡linux 7.2,科学网—悲喜录:服务器 CentOS 7.2 安装Nvidia显卡驱动(64bit) - 袁伟的博文...

    先来一段网络上的安装步骤: ---------------------------------------------------------------- CentOS 7.0 Nvidia显卡安装 ...

  3. linux 后台进程管理,科学网—linux相关操作之后台进程管理 - 郗强的博文

    目录: 1.查找后台进程 2.杀死后台进程 3.启动后台进程 1.查找后台进程 ps 命令是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行及其运行状态. 进程是否结束.进程有没有僵死.哪 ...

  4. android x86虚拟机不识别网卡,科学网-AndroidSDK-虚拟机之Intel x86虚拟机安装-几个错误解决方法-联网-马飞的博文...

    在类似于<虚拟化技术加速Android模拟器尝试  > http://blog.csdn.net/wjxjyl/article/details/7433979 文章里,提到使用Intel ...

  5. linux合并pdf命令,科学网—[转载]linux下利用命令行工具pdftk对PDF进行合并分割(转载) - 崔鹏碧的博文...

    pdftk是非常好用的PDF页面操作工具,能够切割.合并.提取指定页面等. 常用包括的功能如下:合并 PDF: 分割 PDF 页面: 旋转 PDF 页面: PDF 带密码访问: PDF 填加密码: 用 ...

  6. linux去重文件第一列,科学网—Linux实用命令 - 刘洪波的博文

    1.查看系统访问日志(实时) tail --lines=100 -f /var/log/secure 2.按列合并文件 paste file1 file2 >combind.txt 3.按行合并 ...

  7. linux中wine文件夹在哪,科学网—Linux下wine的安装和使用以及CAJviewer的安装 - 苗玉虎的博文...

    最近突然想使用caj软件看文献,发现linux不支持,so百度一下如何安装,搜到好多,但很多都很乱,遂记下自己的心路历程,以示记载,或许时间久了忘记,留个备份吧,也希望对他人有帮助. 下载好CAJvi ...

  8. 红帽linux端口关闭,科学网—RHEL下关闭某个端口 - 孙鹏的博文

    有时由于某种原因,5432被占用,这时如果想关闭这个端口怎么做呢? 1.首先用如下命令查看端口占用情况: [root@localhost local]# netstat -ano 2.然后查看占用54 ...

  9. linux中硬链接文件,科学网—Linux:文件的符号链接和硬链接 - 刘洋洋的博文

    参考:中国大学MOOC课程<Linux系统管理>,授课教师:颜晨阳. 推荐阅读: t.cn/RLXkhpc 1 符号(symbolic)链接 与Windows的快捷方式很像,这些文件很小, ...

最新文章

  1. 404未找到是什么意思_为什么老遇上404 not found?你懂的
  2. SpringMVC @RequestBody 接收Json数组对象
  3. 13、mybatis多表关联查询级联属性
  4. Swap Letters CodeForces - 1215C(贪心)
  5. vue-cli打包之后的项目在nginx的部署
  6. 什么叫冷备用状态_新密5P加工中心冷油机生产厂家电话【瀚信德】
  7. java锁的级别_Java锁的那些事儿之JDK锁(ReentrantLock)
  8. 10.11.5 brew mysql_Mac OS10.11下mysql5.7.12 安装配置方法图文教程
  9. yum 安装rabbitMQ
  10. oracle中日期格式的注意事项
  11. JAVA获取汉字拼音首字母
  12. 睡眠分期中的各种特征
  13. Android签名校验
  14. AcrelEMS-IDC数据中心综合能效管理解决方案
  15. 几个不常见但非常出色的 .NET 开源库
  16. 2022蓝帽杯初赛部分wp
  17. 部分淘宝店超低价卖商品是骗局
  18. mysql题目练习的答案
  19. 安装与使用IPy模块
  20. 微型计算机室内太干燥,暖气屋里太干燥怎么办 七种方法增加室内湿度

热门文章

  1. 《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令
  2. silverlight实现图片局部放大效果
  3. 8.Linux的LVM使用详解
  4. 2020统计局的行政划分表_天津市第七次全国人口普查区域划分与地图绘制试点工作在西青区开展...
  5. 计算机毕业设计中Python Django 框架目录结构简介
  6. linux 移动硬盘 优化,不花一分钱,给移动硬盘加速
  7. xterm远程连服务器连不上_VS Code Remote 发布!开启远程开发新时代
  8. 默认是字典排序法_每日一课 | Python 进阶编程之字典的高级用法
  9. 50欧姆线设计 高频pcb_高频电路布线的应对方法有哪些?
  10. 有了malloc/free为什么还要new/delete ?