Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2978971
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2012-02-22 17:25:21

1)

cat file
c-h-i-n-a -unix

我只想替换空格前面的字符中的 "-" 符号:
china -unix



  1. sed -r ':a;s/-(.* .*)/\1/;ta' file
[解析]
这个原理就是利用了 t 判断是否前面替换成功,而后跳转标签,关键就是那个空格的分界线。






2)

cat file
net123 aaa bbb net123
net456 ccc ddd net456

删除每行的重复字符串只保留第一个:
net123 aaa bbb
net456 ccc ddd





  1. sed ':1 s/\(.\+\) \(.*\)\1/\1 \2/;t1' file
[解析]
这个原理也是一样的,利用 t 来判断是否替换成功。


  1. awk '{for(i=1;i<=NF;i++)if(a[$i]++)$i="";NF+=0;delete a}1' file
[解析]
awk利用数组自加作为条件判断是否已经出现过,条件成立就置空。




3)

把字符串 01/02/03/t1.txt 拆分成 01,01/02,01/02/03,01/02/03/t1.txt


  1. sed ':1 s#^\([^,]\+\)/\(.*\)#\1,\1/\2#;t1'


4)
千分位


  1. echo "1234"|sed -r ':1 s/(.*\B)(\w{3})/\1,\2/;t1'
  2. echo "1234"|sed ':1 s/\B\w\{3\}\b/,&/;t1'




阅读(5404) | 评论(1) | 转发(1) |
0

上一篇:简单的日期计算方法

下一篇:Bash快捷键

给主人留下些什么吧!~~

英语盲学linux2012-03-27 18:51:26

最近一直看您blog学习,这个自己练习的时候没写出来 写了个sed -r  's/(\w)-+/\1/g'