免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5233 | 回复: 12
打印 上一主题 下一主题

tab 转换 空格 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-23 10:12 |只看该作者 |倒序浏览
求助,如何将一个文件中的所有tab转换为空格,并且保持对齐。
如:1.txt(中间为tab)
1        aaa
2        bbb
11      cccc
12      ddd
效果:(中间为空格)
1        aaa
2        bbb
11      cccc
12      ddd
Vi中expandtab可以实现,但是脚本实现方便么。

论坛徽章:
0
2 [报告]
发表于 2010-03-23 10:21 |只看该作者
本帖最后由 where27 于 2010-03-23 10:23 编辑

回复 1# calmmind
  1. awk '{$1=$1}1' 1.txt
  2. sed 's/\t/ /g' 1.txt
复制代码

论坛徽章:
0
3 [报告]
发表于 2010-03-23 10:26 |只看该作者
谢谢回复,但是试了2楼的方法,都不能保持对齐

论坛徽章:
0
4 [报告]
发表于 2010-03-23 10:27 |只看该作者
回复 3# calmmind


    恩,没注意到还要对齐

论坛徽章:
0
5 [报告]
发表于 2010-03-23 10:27 |只看该作者
类似这种效果
#!/bin/sh
vi 1.txt <<!
:set ts=4
:set expandtab
:%retab!
:wq
!

论坛徽章:
0
6 [报告]
发表于 2010-03-23 10:32 |只看该作者
本帖最后由 ywlscpl 于 2010-03-23 10:35 编辑
  1. [root@Mylinux tmp]# cat file
  2. 1       aaa     qqqq
  3. 2       bbb     123
  4. 11      ccccccc jj
  5. 12      ddd     lef
  6. [root@Mylinux tmp]# awk '{a[NR]=$0;for (i=1;i<NF;i++) {l[i]=length($i);max[i]=l[i]>max[i]?l[i]:max[i]}}END{for (i=1;i<=NR;i++) {n=split(a[i],m);for (j=1;j<n;j++) {printf m[j];for (k=1;k<=max[j]-length(m[j])+2;k++) printf " "}print m[n]}}' file
  7. 1   aaa      qqqq
  8. 2   bbb      123
  9. 11  ccccccc  jj
  10. 12  ddd      lef
  11. [root@Mylinux tmp]#
复制代码

论坛徽章:
0
7 [报告]
发表于 2010-03-23 10:32 |只看该作者
回复 3# calmmind
  1. awk '{for(i=1;i<=NF;i++)printf "%10s",$i;printf "\n"}' 1.txt
复制代码
用printf试试,固定每个域都是10个字符,不够的话自己定义

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
8 [报告]
发表于 2010-03-23 10:33 |只看该作者
just expand urfile

论坛徽章:
0
9 [报告]
发表于 2010-03-23 10:43 |只看该作者
7楼代码,printf  "%-10s",$i
左对齐

论坛徽章:
0
10 [报告]
发表于 2010-03-23 10:44 |只看该作者
谢谢黑哥,expand --tabs=4 1.txt >2.txt
又学了一个新命令
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP