免费注册 查看新帖 |

Chinaunix

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

捷力Linux实用集(3) 整个文件只替换字符串的第一次出现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-11 21:23 |只看该作者 |倒序浏览
cat tmp.txt
==============
1234    1234
1234
1234
1234
==============
希望只替换第一个出现的 1234为abc, 其它的都不替换
方法一:sed
sed '/1234/{s/1234/abc/;:skip n;b skip;}' tmp.txt
方法二:awk
awk 'ok ==0 && /1234/{ sub(/1234/,"abc");print; ok = 1; next; } (ok == 1){print}' tmp.txt
以上命令是在一同一行中。
方法三: perl
perl -e 'undef $/;my $a=;$a=~s/1234/abc/s;print $a;'  tmp.txt
方法四: bash
bash要版本3以上才支持regex(7)的正则表达式, 但对这个简单的例子也足够了。不知道的复杂的正则表达式能否支持:
ok=0;
while read -r l;
do
   if [[ "$l" =~ "1234" && $ok == 0 ]] ;then
      l="${l/1234/abc}";ok=1;
   fi;
   echo "$l";
done
方法五: vim
let g:first = 0
function! Tmp(src, dest)
  
  if g:first == 0
     let g:first=1
     return a:dest
  
  endif
  
  return a:src
endfunction
%s#1234#\=Tmp(submatch(0), 'abc')#g


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/8681/showart_1120719.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP