LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: yongjian

清理blank space的问题(sed&awk)[基本解决]

[复制链接]
发表于 2004-4-29 00:50:08 | 显示全部楼层
最初由 yongjian 发表
哦, 明白了!谢谢教主和javalee兄! 原来教主将sed中的'/'分割符换成了'@'.诈看,我还以为是什么通配表示符呢.

呵呵,我的习惯而已~~~用@定界符可能会更醒目一点。
 楼主| 发表于 2004-4-29 00:52:11 | 显示全部楼层
哦,教主,按强壮性来说,还是加上tab好,因为有可能存在空格和tab的夹杂,反正也看不见,我也没有一行一行的查.所以最好的方法就是去掉所有行前,行后看不见的符号(white space),这是最保险的.
发表于 2004-4-29 00:53:54 | 显示全部楼层

  1. s@^[:blank:][:blank:]*@@  [color=green]#去掉至少一个的前导空格或制表符[/color]
  2. s@[:blank:][:blank:]*$@@  [color=green]#去掉至少一个的后置空格或制表符[/color]
复制代码
 楼主| 发表于 2004-4-29 00:58:55 | 显示全部楼层
To 教主: 为什么[:blank:]要写两遍呢?
发表于 2004-4-29 01:00:52 | 显示全部楼层
最初由 yongjian 发表
To 教主: 为什么[:blank:]要写两遍呢?

如果一行的行首存在空白,那么它至少存在一个空格或制表符,这是一个逻辑问题;同时,sed不存在+,所以使用*,这就需要两个[:blank:]了。

ps:数据过滤是sed的强项之一。
 楼主| 发表于 2004-4-29 01:03:07 | 显示全部楼层
好象不好使,输出结果:

  1. sdjflqwiedjfl

  2. skdjflqsj lasd
  3. sdkjflak sdmfl
  4. sdfjlk mlksmdkcvmlas

  5. sdl kasdjfl
  6. sdk laskmvcasldf

  7. asldmvclas lasd

  8. sdkjl kasdj

  9. sld as
复制代码

明显,倒数第三行的前导空格没去掉阿. 还没有试tab的情况.
发表于 2004-4-29 01:04:05 | 显示全部楼层
to yongjian:
以后要把脚本的结果告诉大家,这样才是负责的发问人哦~~~呵呵
发表于 2004-4-29 01:06:43 | 显示全部楼层
最初由 yongjian 发表
好象不好使,输出结果:

  1. sdjflqwiedjfl

  2. skdjflqsj lasd
  3. sdkjflak sdmfl
  4. sdfjlk mlksmdkcvmlas

  5. sdl kasdjfl
  6. sdk laskmvcasldf

  7. asldmvclas lasd

  8. sdkjl kasdj

  9. sld as
复制代码

明显,倒数第三行的前导空格没去掉阿. 还没有试tab的情况.

不可能吧。
注意,你的数据过滤后的输出内容怎么和你在楼顶给出的数据内容不一致呢?详细准确地描述你的问题。
 楼主| 发表于 2004-4-29 01:07:10 | 显示全部楼层
不对阿, 仔细比较了一下,我文件前面的几个字怎么也没有了? 教主第一个方案是可行的,javalee兄的awk也是我work的. sorry.
发表于 2004-4-29 01:09:45 | 显示全部楼层
s@^[:blank:][:blank:]*@@  #去掉至少一个的前导空格或制表符
s@[:blank:][:blank:]*$@@   #去掉至少一个的后置空格或制表符

试试楼上我已经给出的最终版本啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表