Chinaunix首页 | 论坛 | 博客
  • 博客访问: 215461
  • 博文数量: 87
  • 博客积分: 192
  • 博客等级: 入伍新兵
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-14 07:44
文章分类

全部博文(87)

文章存档

2013年(1)

2012年(86)

分类:

2012-04-14 15:36:32

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'




阅读(1091) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~